【问题标题】:How to compute the mean based on a grouping of k nearest neighbours?如何根据一组 k 最近邻计算平均值?
【发布时间】:2019-04-02 15:41:49
【问题描述】:

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

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 小时的产量平均值,第 17 和 18 小时的产量平均值第 21 和 22 小时,最后是第 25 小时

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

【问题讨论】:

    标签: python pandas group-by mean


    【解决方案1】:

    由于您的组间隔不均匀,请定义您的 bin 边缘并使用 pd.cut 对这些 bin 进行分组。

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-19
      • 1970-01-01
      • 2018-12-20
      • 2014-07-10
      • 2018-05-09
      • 2010-10-16
      • 2011-06-20
      • 1970-01-01
      相关资源
      最近更新 更多