我有一个数据框df
,看起来像这样:
column_a ...
1
1
1
2
3
3
3
3
3
现在,我想基于column_a
对数据帧进行分组,但结果组的大小不应大于s
.
我在分组数据帧(df.groupby(['column_a'])
)上使用了一个简单的循环,如果组太大,则将其拆分,但我觉得有一种更短、更优雅的方法可以做到这一点.
有没有人知道一种简短而优雅的方法可以在有限的群体规模下进行分组?
我有一个数据框df
,看起来像这样:
column_a ...
1
1
1
2
3
3
3
3
3
现在,我想基于column_a
对数据帧进行分组,但结果组的大小不应大于s
.
我在分组数据帧(df.groupby(['column_a'])
)上使用了一个简单的循环,如果组太大,则将其拆分,但我觉得有一种更短、更优雅的方法可以做到这一点.
有没有人知道一种简短而优雅的方法可以在有限的群体规模下进行分组?
看起来你可以按a
分组,按cumcount和s分组.
import pandas as pd
df = pd.DataFrame({'a':[1,1,1,2,3,3,3,3,3]})
s = 2
df.groupby(['a',df.groupby('a').cumcount()//s]).size()
输出
a
1 0 2
1 1
2 0 1
3 0 2
1 2
2 1