Pandas计算小时平均值

2024-04-19 21:37:30 发布

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

我有一个数据帧,其中时间是与数据集相关的浮点:

 Time            Value
-47.88333         90
-46.883333        23
-45.900000        66
-45.883333        87
-45.383333        43

时间列的范围从-48到0。我想做的是计算从-47.5到-0.5每半小时的平均值。例如:

-47.5是-48和-47之间所有值的平均值,-46.5是-47到-46之间所有值的平均值。如果没有价值,我想把以前的平均数结转。在

产生如下输出:

^{pr2}$

由于time列不是datetime对象,这是否需要一个自定义函数?在


Tags: 数据对象函数datetimetimevalue时间平均值
2条回答

尝试用pd.cut来绑定时间变量:

#change the bins arg to modify the size of the bins
df.loc[:, 'TimeBin'] = pd.cut(df.Time, bins=[i for i in range (-48, 0)])
#groupby the time bin and take the mean:
df[['TimeBin', 'Value']].groupby('TimeBin').mean()

使用groupby可以很容易地做到这一点:

(df.groupby(df.Time.apply(lambda x: np.floor(x) + 0.5))
   .mean()
   .Value
   .reindex(np.arange(-47.5, -42.5))
   .ffill())

Time
-47.5    90.000000
-46.5    23.000000
-45.5    65.333333
-44.5    65.333333
-43.5    65.333333
Name: Value, dtype: float64

相关问题 更多 >