使用 pandas 以小数增量计算分箱平均值

Use pandas to calculate binned average with decimal increments

我有一个 pandas 数据框,我想为其计算分箱平均值。 要装箱我的数据,而不是使用箱子的数量,我正在寻找一个解决方案(可能是在线),我可以为其指定箱子大小。例如,来自此数据:

                A     B
               0.1   4.2
               0.15  2.0
               0.17  3.0 
               0.2   6.4
               0.3   1.0
               0.35  5.0
               0.4   10.0
               0.43  2.0
               0.5   8.0

我想为 A 列指定 bin_size=0.1 获取以下数据框作为我的分箱平均值:

                   A       B                          
    (0.1,0.2)     0.14     3.06
    (0.3,0.4)     0.35     5.33
    (0.4,0.5)     0.44     6.66

如果我要指定垃圾箱的数量,我会通过以下方式解决:

    groups = df.groupby(pd.cut(df.A, bins))
    df2 = pd.DataFrame(groups.mean())

但是,正如我所说,我正在寻找一种指定垃圾箱大小的解决方案。也许重要的是要强调我的数据集有 33961 行。

您可以使用以 0.1

等间隔的 numpy 数组定义 bins
ranges = np.arange(df.A.min() - 0.1, df.A.max() + 0.1, 0.1)  #[0, 0.1, 0.2, 0.3 ...] 
groups = df.groupby(pd.cut(df.A, ranges))
groups.mean()


#               A           B
#  A        
# (0.0, 0.1]    0.100000    4.2
# (0.1, 0.2]    0.173333    3.8
# (0.2, 0.3]    0.300000    1.0
# (0.3, 0.4]    0.375000    7.5
# (0.4, 0.5]    0.465000    5.0