[英]Add number to groups by count of values in Pandas Dataframe
我有一個 pandas Dataframe 的列,我想將它們按 3 行的包分組,然后在每個包上遞增一個索引。
id protocol protocol_grp
1 ISD ISD1
2 ISD ISD1
3 ISD ISD1
4 IRQ IRQ1
5 IRQ IRQ1
6 IRQ IRQ1
7 IRQ IRQ2
8 IRQ IRQ2
9 IRQ IRQ2
10 IRQ IRQ3
11 ISD ISD2
12 ISD ISD2
13 ISD ISD2
14 ISD ISD3
15 IRQ IRQ3
16 IRQ IRQ3
17 IRQ IRQ4
所需的 output 是 protocol_grp 列。 我希望能夠做的是每次我有 3 個相同的協議時,我將索引增加 1。
希望這是有道理的。
您可以使用:
df['protocol_grp'] = df['protocol'] + df.groupby('protocol').cumcount() \
.floordiv(3).add(1).astype(str)
print(df)
# Output
id protocol protocol_grp
0 1 ISD ISD1
1 2 ISD ISD1
2 3 ISD ISD1
3 4 IRQ IRQ1
4 5 IRQ IRQ1
5 6 IRQ IRQ1
6 7 IRQ IRQ2
7 8 IRQ IRQ2
8 9 IRQ IRQ2
9 10 IRQ IRQ3
10 11 ISD ISD2
11 12 ISD ISD2
12 13 ISD ISD2
13 14 ISD ISD3
14 15 IRQ IRQ3
15 16 IRQ IRQ3 # <- check this row
16 17 IRQ IRQ4
讓我們檢查cumcount
然后得到除數
df['protocol_grp'] = df['protocol'].add((df.groupby('protocol').cumcount()//3+1).astype(str))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.