如何在DataFrame中创建记录ID值出现次数序号的新列?
实现DataFrame中id出现次数的序号式计数
你可以用pandas的groupby()结合cumcount()方法来实现这个需求,具体操作如下:
- 核心逻辑:按
id分组后,对每组内的行按出现顺序累计计数(默认从0开始),最后加1得到从1起始的序号。 - 代码示例:
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({ 'id': [123456, 987641, 123456, 987641, 123456, 123456, 212212] }) # 创建occurence列 df['occurence'] = df.groupby('id').cumcount() + 1 print(df)
执行后输出结果与你要求的格式完全一致:
id occurence 0 123456 1 1 987641 1 2 123456 2 3 987641 2 4 123456 3 5 123456 4 6 212212 1
补充说明
groupby('id'):将DataFrame按id值分组,每个唯一id对应一个独立分组。cumcount():对每个分组内的行按出现顺序生成从0开始的连续整数。- 加1是因为你需要的序号从1开始,而非默认的0起始。
你提到的Counter或value_counts()仅能统计每个id的总出现次数,无法实现按行顺序标记序号,上述方法正好解决了这个问题。
内容的提问来源于stack exchange,提问作者James Anderson
相关产品推荐
相关产品推荐

