为DataFrame添加序列列:基于另一列唯一变量的连续计数
解决方案:为DataFrame生成基于新增唯一ID的连续序列
我来帮你解决这个问题!这个需求的核心是跟踪已出现的唯一ID,并在遇到新ID时递增序列值,下面是具体的实现方案:
实现思路
我们需要按顺序遍历ID列,维护一个记录已出现ID的集合:
- 每遇到一个从未出现过的ID,就将序列值加1,并把该ID加入集合
- 如果遇到的ID已经在集合中,保持当前序列值不变
- 最后将生成的序列值作为新列添加到DataFrame中
代码示例
首先构造示例数据并导入依赖:
import pandas as pd # 构造你提供的示例数据 data = {'id': [163, 2, 4, 163, 176, 163, 2, 3]} df = pd.DataFrame(data)
然后实现序列生成逻辑:
# 初始化用于跟踪的变量 seen_ids = set() current_seq = 0 seq_values = [] # 按行遍历ID列 for id_val in df['id']: if id_val not in seen_ids: current_seq += 1 seen_ids.add(id_val) seq_values.append(current_seq) # 将生成的序列添加为新列 df['seq'] = seq_values
执行后得到的结果如下:
id seq 0 163 1 1 2 2 2 4 3 3 163 3 4 176 4 5 163 4 6 2 4 7 3 5
补充说明
- 这个方法的优势是逻辑直观,完全保证行顺序的准确性,适合大多数数据规模的场景
- 如果你的DataFrame数据量极大(百万级以上),可以考虑用
numba库对循环进行加速,进一步提升效率
内容的提问来源于stack exchange,提问作者MarieS
相关产品推荐
相关产品推荐

