Pandas:获取某些行的平均值并作为datafram返回

2024-04-19 19:50:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的df

enter image description here

它包含speed和{},位于不同日期的小时分钟。例如,第一行记录在7:11,20060101,dir=87, speed=5。在

现在,我认为数据可能太精确了,我想用每小时的平均值来计算。我该怎么做?在


我可以通过groupy

df['Hr']=df['HrMn'].apply(lambda x: str(x)[:-2])
df.groupby(['date', 'Hr'])['speed'].mean()

我想要什么就要什么

enter image description here

但它不是一个数据帧,我怎样才能用于以后的计算呢?具体来说,我想知道

  1. 如果我使用的groupby方法是解决这个问题的正确方法吗?如果是,以后如何使用它作为数据帧?(我还需要获得dirdir_max和其他属性)

  2. 结果groupby返回的顺序不正确(在dateHr)中,是否有必要对其重新排序?


更新:

如果我这样做,df.groupby(['date', 'Hr'])['speed'].mean().unstack(),它将返回

enter image description here

数据当然是正确的,但我仍然希望它遵循初始数据帧形式

enter image description here

除了HrMn->;Hr


Tags: 数据方法dfdatedir记录hrmean
1条回答
网友
1楼 · 发布于 2024-04-19 19:50:20

你得到的是一个多索引数据帧。你可以试试

df.groupby(['date', 'Hr'])['speed'].mean().reset_index()

如果你想知道其余数据的平均值,试试看

^{pr2}$

编辑: 在速度列上应用平均值,在方向最大值和速度最大值上应用最大值

df.groupby(['date', 'Hr']).agg({'speed' : np.mean,'dir_max' : np.max, 'speed_max': np.max}).reset_index()

相关问题 更多 >