将数据分组到箱子中

时间:2017-03-09 16:33:52

标签: python pandas

我希望将以下数据框df子集化为大小为50的二进制文件:

    ID      FREQ
0   358081  6151
1   431511  952
2   410632  350
3   398149  220
4   177791  158
5   509179  151
6   485346  99
7   536655  50
8   389180  51
9   406622  45
10  410191  112

结果应该是这个:

FREQ_BIN    QTY_IDs
>200        3
150-200     2
100-150     1
50-100      3
<50         1

我该怎么办?我应该使用groupBy还是其他方法?

1 个答案:

答案 0 :(得分:0)

您可以使用pd.cut

df.groupby(pd.cut(df.FREQ, 
                  bins=[-np.inf, 50, 100, 150, 200, np.inf], 
                  right=False)
           ).size()

right=False确保我们按照您的输出建议采用半开区间隔,与np.digitize不同,我们需要在“无限端点”的区间中包含np.inf

<强>演示

>>> df.groupby(pd.cut(df.FREQ, 
                      bins=[-np.inf, 50, 100, 150, 200, np.inf], 
                      right=False)
               ).size()

FREQ
[-inf, 50)    1
[50, 100)     3
[100, 150)    1
[150, 200)    2
[200, inf)    4
dtype: int64