插件窝 干货文章 如何使用Python高效地为DataFrame数据列添加连续序号,并使相同数据共享相同序号?

如何使用Python高效地为DataFrame数据列添加连续序号,并使相同数据共享相同序号?

序号 数据 相同 ngroup 871    来源:    2025-03-15

在Pandas中,你可以使用 groupbyngroup 方法来为DataFrame数据列添加连续序号,并且使相同的数据共享相同的序号。ngroup 方法会为每个组分配一个唯一的序号,从0开始递增。

以下是一个示例代码,展示如何高效地为DataFrame数据列添加连续序号,并使相同数据共享相同序号:

import pandas as pd

# 示例数据
data = {'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'baz', 'baz']}
df = pd.DataFrame(data)

# 使用groupby和ngroup为相同数据分配相同的序号
df['序号'] = df.groupby('A').ngroup()

print(df)

输出结果:

     A  序号
0  foo   0
1  bar   1
2  foo   0
3  bar   1
4  foo   0
5  baz   2
6  baz   2

解释:

  1. groupby('A'): 按照列 A 进行分组。
  2. ngroup(): 为每个分组分配一个唯一的序号,从0开始递增。
  3. df['序号']: 将生成的序号赋值给新列 序号

注意事项:

  • ngroup 方法默认从0开始编号,如果你希望从1开始编号,可以在结果上加1:df['序号'] = df.groupby('A').ngroup() + 1
  • 这种方法适用于任何类型的列,不仅仅是字符串列。

性能考虑:

  • groupbyngroup 是Pandas内置的高效方法,适用于大多数情况。如果你的数据集非常大,可以考虑使用Dask等分布式计算框架来进一步提升性能。

通过这种方式,你可以高效地为DataFrame数据列添加连续序号,并使相同数据共享相同序号。