Pandas为新列中的组生成数字序列



我正在处理以下数据帧,

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

最新更新