如何在DataFrame中为所有行添加连续序列号列(规避耗时的FOR循环)
高效给DataFrame添加连续序列号的方法
嘿,这事儿好办!别用for循环遭罪了,pandas原生就有好多矢量化的高效操作,完全不用逐行遍历,处理大数据量也超快。下面给你几个实用的方法:
方法1:利用reset_index()生成索引
因为你的数据每行都是唯一的,直接把DataFrame的索引转换成新列就行,一步到位:
import pandas as pd # 先构造你的原始DataFrame df = pd.DataFrame({ 'COL1': ['A', 'B', 'A', 'B'], 'COL2': ['X', 'X', 'Y', 'Z'] }) # 添加连续序列号COL3 df['COL3'] = df.reset_index(drop=True).index
方法2:直接生成序列
如果不想动原索引,也可以直接根据DataFrame的行数生成连续序列,两种方式都可以:
方式A:用Python内置的range()
df['COL3'] = range(len(df))
方式B:用pandas的arange()
df['COL3'] = pd.arange(len(df))
最终效果
不管用哪种方法,你都会得到想要的结果:
| COL1 | COL2 | COL3 |
|---|---|---|
| A | X | 0 |
| B | X | 1 |
| A | Y | 2 |
| B | Z | 3 |
这些方法都是矢量化操作,和for循环逐行处理比起来,效率提升不是一星半点,数据量越大越明显~
内容的提问来源于stack exchange,提问作者Joebevo
相关产品推荐
相关产品推荐

