我正在处理以下数据帧,
import pandas as pd
df=pd.DataFrame({'A':['A','A','A','B','B','C','C','C','C'],
'B':['a','a','b','a','b','a','b','c','c'],
})
df
A B
0 A a
1 A a
2 A b
3 B a
4 B b
5 C a
6 C b
7 C c
8 C c
我想创建一个新的列,列B子组的序列值基于列a组,如下
A B C
0 A a 1
1 A a 1
2 A b 2
3 B a 1
4 B b 2
5 C a 3
6 C b 1
7 C c 2
8 C c 2
我试过这个,但没有给我想要的输出
df['C'] = df.groupby(['A','B']).cumcount()+1
IIUC,我想你想要这样的东西:
df['C'] = df.groupby('A')['B'].transform(lambda x: (x != x.shift()).cumsum())
输出:
A B C
0 A a 1
1 A a 1
2 A b 2
3 B a 1
4 B b 2
5 C c 1
6 C b 2
7 C c 3
8 C c 3