我有一个看起来像这样的数据框:
df =
Hour Production
12 45
15 50
18 89
21 56
12 49
16 55
18 23
21 44
12 33
15 95
17 76
22 89
25 97
我想按小时分组,然后取生产平均值,但是,我想以这样的方式分组:一个分组可以占用-/ + 1小时。换句话说,输出应该具有三个组中第12小时的生产平均值,第15和16小时的生产平均值,第17和18小时的生产平均值,第15和16小时的生产平均值。 21和22小时,最后只有25小时
除了创建小时集群然后按集群分组之外,还有更好的方法吗?
答案 0 :(得分:1)
由于您的组没有均匀分布,因此请定义箱的边缘,并使用pd.cut
对这些箱进行分组。
import pandas as pd
bins = [12, 15, 17, 19, 21, 23, 25, 26]
df.groupby(pd.cut(df.Hour, bins, right=False)).Production.mean()
输出:
Hour
[12, 15) 42.333333
[15, 17) 66.666667
[17, 19) 62.666667
[19, 21) NaN
[21, 23) 63.000000
[23, 25) NaN
[25, 26) 97.000000
Name: Production, dtype: float64