如何基于k个最近邻的分组来计算均值?

时间:2018-10-29 16:38:11

标签: python pandas group-by mean

我有一个看起来像这样的数据框:

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小时

除了创建小时集群然后按集群分组之外,还有更好的方法吗?

1 个答案:

答案 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