簡體   English   中英

通過在 pandas 中的每個組中添加以 1 開頭的數字,在 dataframe 中添加新列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM