在 Pandas 中,如何计算 bin 上的值计数和另外 1 列中的总值

In Pandas, how to compute value counts on bins and sum value in 1 other column

我有 Pandas 数据框,例如:

   df =
         col1        col2

         23          75
         25          78
         22          120

我想指定 bins:0-100 和 100-200 并在这些 bins 中除以 col2 计算其值计数,并对位于这些 bins 中的值的 col1 求和。

 So:
     df_output:
        col2_range          count         col1_cum
         0-100               2              48
         100-200             1              22

获取 col2_range 和计数非常简单:

         import numpy as np
         a = np.arange(0,200, 100)
         bins = a.tolist()
         counts = data['col1'].value_counts(bins=bins, sort=False) 

不过,我如何求和 col2?

IIUC,尝试使用 pd.cut 创建箱子并按这些箱子分组:

g = pd.cut(df['col2'], 
           bins=[0, 100, 200, 300, 400], 
           labels = ['0-99', '100-199', '200-299', '300-399'])
df.groupby(g, observed=True)['col1'].agg(['count','sum']).reset_index()

输出:

      col2  count  sum
0     0-99      2   48
1  100-199      1   22

我想我看错了原文post:

g = pd.cut(df['col2'], 
           bins=[0,100,200,300,400], 
           labels = ['0-99', '100-199', '200-299', '300-399'])
df.groupby(g, observed=True).agg(col1_count=('col1','count'),
                                 col2_sum=('col2','sum'),
                                 col1_sum=('col1','sum')).reset_index()

输出:

      col2  col1_count  col2_sum  col1_sum
0     0-99           2       153        48
1  100-199           1       120        22