有沒有更簡單/更正確的方法來分配動態羣組? 讓我們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