首页 > 解决方案 > Python Pandas:按列和组大小分组

问题描述

我有这个熊猫数据框:

column1     column2
   1           1
   1           2
   1           3
   1           4
   1           5
   2           6
   2           7
   3           8

并且需要按 column1 对其进行分组,但如果该组的元素超过 2 个,则将其划分。然后应用一个 ngroup 函数,得到:

column1     column2     column3
   1           1           0
   1           2           0
   1           3           1
   1           4           1
   1           5           2
   2           6           3
   2           7           3
   3           8           4

标签: pythonpandas

解决方案


GroupBy.cumcount与整数除法一起使用2for 助手Series并传递给groupbyfor GroupBy.ngroup

s = df.groupby('column1').cumcount() // 2

df['column3'] = df.groupby([s, 'column1'], sort=False).ngroup()
print (df)
   column1  column2  column3
0        1        1        0
1        1        2        0
2        1        3        1
3        1        4        1
4        1        5        2
5        2        6        3
6        2        7        3
7        3        8        4

推荐阅读