在 Pandas 中,你可以使用 groupby
和 cumcount
来为数据列添加连续序号,并且相同的数据共享相同的序号。以下是一个示例:
假设你有一个 DataFrame df
,其中有一列 data
,你想要为这一列添加一个连续序号,且相同的数据共享相同的序号。
import pandas as pd
# 示例数据
data = {'data': ['A', 'B', 'A', 'C', 'B', 'B', 'A']}
df = pd.DataFrame(data)
# 添加连续序号
df['序号'] = df.groupby('data').cumcount() + 1
print(df)
输出结果将会是:
data 序号
0 A 1
1 B 1
2 A 2
3 C 1
4 B 2
5 B 3
6 A 3
groupby('data')
:按照 data
列进行分组。cumcount()
:为每个分组内的元素生成一个从 0 开始的连续序号。+ 1
:将序号从 0 开始变为从 1 开始。这样,相同的数据会共享相同的序号,并且序号会随着数据的重复出现而递增。
如果你希望相同的数据共享相同的序号,而不是递增,你可以使用 groupby
和 ngroup
:
# 添加共享序号
df['共享序号'] = df.groupby('data').ngroup() + 1
print(df)
输出结果将会是:
data 共享序号
0 A 1
1 B 2
2 A 1
3 C 3
4 B 2
5 B 2
6 A 1
ngroup()
:为每个分组分配一个唯一的整数编号,从 0 开始。+ 1
:将编号从 0 开始变为从 1 开始。这样,相同的数据会共享相同的序号,但序号不会递增。