我希望将以下数据框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
还是其他方法?
答案 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