You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas DataFrame中快速生成随客户变更递增的Line ID列

解决方法

直接用Pandas的内置方法就能搞定,不用写for循环,代码简洁还高效:

import pandas as pd

# 构造示例数据
data = {'Customer': ['Pepsi', 'Pepsi', 'Lego', "Mcdonald's", "Mcdonald's"]}
df = pd.DataFrame(data)

# 生成Line ID列
df['Line ID'] = df['Customer'].ne(df['Customer'].shift()).cumsum()

运行后得到的结果完全符合需求:

CustomerLine ID
Pepsi1
Pepsi1
Lego2
Mcdonald's3
Mcdonald's3

代码解释

  • df['Customer'].shift():把Customer列的所有行向下偏移一位,第一行变为NaN
  • ne():判断当前行的Customer和偏移后的行是否不相等,返回布尔值(True对应1,False对应0)
  • cumsum():对上述布尔值对应的1和0做累加,每次遇到不同的Customer时就自动加1,正好生成连续的Line ID

这种方法比for循环高效太多,尤其是处理大数据集时,完全利用了Pandas的向量化运算优势,不用逐行遍历。

内容的提问来源于stack exchange,提问作者PiCubed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 22:42:05