我们有这样的需求,根据A,B两列联合分组,第一个一样的key都赋值1,然后累加。当出现不一样的A,从1开始继续累加
比如

AB
x1
x1
x2
y1
y1
x1
x2
y1

我想这样

ABC
x11
x11
x22
y11
y11
x11
x22
y11
import pandas as pd

df = pd.DataFrame({
    'A': ['x', 'x', 'x', 'y', 'y', 'x', 'x', 'y'],
    'B': [ 1,   1,   2,   1,   1,   1,   2,   1]
})
print(df)
df = df.sort_values(['A','B'])
# 1. 找出 A 值变化的连续块编号
df['block'] = (df['A'] != df['A'].shift()).cumsum()

# 2. 在每个 block 中对 (A, B) 编号(相同组赋相同编号,从1开始)
df['C'] = df.groupby('block').apply(lambda g: g.groupby(['A', 'B'], sort=False).ngroup() + 1).reset_index(level=0, drop=True)

# 3. 删除辅助列
df = df.drop(columns='block')

print(df)

更多推荐