簡體   English   中英

Pandas 累計計數新值

[英]Pandas cumulative count on new value

我有一個像下面這樣的數據框。

df = pd.DataFrame()
df['col_1'] = [1, 1, 1, 2, 2, 2, 3, 3, 3]
df['col_2'] = ['A', 'B', 'B', 'A', 'B', 'C', 'A', 'A', 'B']
df

  col_1 col_2
0   1   A
1   1   B
2   1   B
3   2   A
4   2   B
5   2   C
6   3   A
7   3   A
8   3   B

我需要在 col_1 上分組,並且在每個組內,只要 col_2 中有新值,我就需要更新累積計數。 類似於下面的數據框。

  col_1 col_2 col_3
0   1    A      1
1   1    B      2
2   1    B      2
3   2    A      1
4   2    B      2
5   2    C      3
6   3    A      1
7   3    A      1
8   3    B      2

我可以使用列表和字典來做到這一點。 但是找不到在內置函數中使用熊貓的方法。

使用factorize與lambda函數GroupBy.transform

df['col_3'] = df.groupby('col_1')['col_2'].transform(lambda x: pd.factorize(x)[0]+1)
print (df)
   col_1 col_2  col_3
0      1     A      1
1      1     B      2
2      1     B      2
3      2     A      1
4      2     B      2
5      2     C      3
6      3     A      1
7      3     A      1
8      3     B      2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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