gpt4 book ai didi

python - Pandas 对新值的累计计数

转载 作者:行者123 更新时间:2023-12-01 00:13:00 32 4
gpt4 key购买 nike

我有一个如下所示的数据框。

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

我可以使用列表和字典来做到这一点。但找不到在内置函数中使用 pandas 的方法。

最佳答案

使用factorize使用 GroupBy.transform 中的 lambda 函数:

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

关于python - Pandas 对新值的累计计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59501259/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com