插件窝 干货文章 Python Pandas 如何为数据列添加连续序号且相同数据共享序号?

Python Pandas 如何为数据列添加连续序号且相同数据共享序号?

序号 相同 共享 数据 923    来源:    2025-03-15

在 Pandas 中,你可以使用 groupbycumcount 来为数据列添加连续序号,并且相同的数据共享相同的序号。以下是一个示例:

假设你有一个 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 开始。

这样,相同的数据会共享相同的序号,并且序号会随着数据的重复出现而递增。

如果你希望相同的数据共享相同的序号,而不是递增,你可以使用 groupbyngroup

# 添加共享序号
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 开始。

这样,相同的数据会共享相同的序号,但序号不会递增。