[英]Add new column in dataframe by adding number beginning by 1 in each groups in pandas
我有一個 dataframe,例如:
COL1 COL2
Group_234 1
Group_234 2
Group_234 3
Group_234 4
Group_89 5
Group_89 6
Group_232 7
Group_232 8
Group_232 9
如何為每個COL1
組添加一個COL3
,我開始一個以 1 開頭的新組編號? 並且還更改COL4
中的COL2
值,其中我在每個新的COL3
組中從 1 開始,例如:
COL1 COL2 COL3 COL4
Group_234 1 Group_1 1
Group_234 2 Group_1 2
Group_234 3 Group_1 3
Group_234 4 Group_1 4
Group_89 5 Group_2 1
Group_89 6 Group_2 2
Group_232 7 Group_3 1
Group_232 8 Group_3 2
Group_232 9 Group_3 3
利用:
print (df)
COL1 COL2
0 Group_234 1
1 Group_234 2
2 Group_234 3
3 Group_234 4
4 Group_89 5
5 Group_89 6
6 Group_232 7
7 Group_232 8
8 Group_232 9
9 Group_234 10 <-difference if repated same groups values
10 Group_234 11 <-difference if repated same groups values
您可以通過比較列COL1
與累計總和的差異來計算連續值,然后將此值用於GroupBy.cumcount
的計數器:
df['COL3'] = 'Group_' + df['COL1'].ne(df['COL1'].shift()).cumsum().astype(str)
#alternative if not consecutive counts
df['COL31'] = 'Group_' + df.groupby('COL1', sort=False).ngroup().add(1).astype(str)
df['COL4'] = df.groupby('COL3').cumcount().add(1)
#alternative if not consecutive counts
df['COL41'] = df.groupby('COL1').cumcount().add(1)
print (df)
COL1 COL2 COL3 COL31 COL4 COL41
0 Group_234 1 Group_1 Group_1 1 1
1 Group_234 2 Group_1 Group_1 2 2
2 Group_234 3 Group_1 Group_1 3 3
3 Group_234 4 Group_1 Group_1 4 4
4 Group_89 5 Group_2 Group_2 1 1
5 Group_89 6 Group_2 Group_2 2 2
6 Group_232 7 Group_3 Group_3 1 1
7 Group_232 8 Group_3 Group_3 2 2
8 Group_232 9 Group_3 Group_3 3 3
9 Group_234 10 Group_4 Group_1 1 5
10 Group_234 11 Group_4 Group_1 2 6
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.