有没有更简单/更正确的方法来分配动态群组? 让我们SAQ,我们有以下DF:在熊猫群体中的动态子群组
group days(int, >0)
A 1
B 12
A 14
A 16
A 19
B 23
C 92
C 12
我想指派基于以下规则分组:
if days >20 then subgroup = 4
if days <= 20 then subgroup = 3
if days <= 10 then subgroup = 2
if days == 0 then subgroup = 1
这里是我如何做到这一点现在:
df['subgroup'] = 4
df.loc[df['days'] >20,'subgroup'] = 4
df.loc[df['days'] <=20,'subgroup'] = 3
df.loc[df['days'] <=10,'subgroup'] = 2
df.loc[df['days'] ==0,'subgroup'] = 1
df = df.reset_index()
df['dynamic_subgroup'] = df.groupby(['group'])['subgroup'].rank(method='dense')
生成的表格是这一个:
group days(int, >0) dynamic_subgroup
A 1 1
B 12 1
A 14 2
A 16 3
A 19 4
B 23 2
C 92 2
C 12 1
我想知道是否有任何更简单/更好的方法在熊猫中实现相同的结果?通常,对代码的任何更正都会得到赞赏。
谢谢@jezrael!但是,我仍然需要使用'rank',对吗?我只是想知道,如果我可以通过一个操作获得这个动态组合.. – user912830823
是的,那么需要'groupby' +'rank'.If需要按密度排序的方法需要'df ['dynamic_subgroup'] = df.groupby([组 '])[' 亚组 ']。秩(方法=' 致密')'。但是,如果只需要计数组,则需要'df ['dynamic_subgroup'] = df.groupby(['group'])。cumcount()',但输出与“rank”不同# – jezrael