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

Pandas DataFrame如何根据列值是否首次出现新增标记列

Pandas 标记列值首次出现的实现方法

你可以直接用Pandas内置的duplicated()方法实现需求,全程是向量化运算,不需要写逐行遍历的循环,执行效率远高于VBA的逐行判断逻辑,尤其适合大数据量场景。

核心实现代码

假设你的DataFrame变量名为df,需要判断重复的列为B列,新增列名为C,直接执行以下代码即可:

df['C'] = (~df['B'].duplicated()).astype(int)

逻辑说明

  • df['B'].duplicated():默认逐行判断B列当前值是否在上方行中出现过,首次出现的行返回False,后续重复出现的行返回True
  • ~:对布尔结果取反,让首次出现的行返回True,重复行返回False
  • .astype(int):将布尔值转为整数,True映射为1,False映射为0,完全匹配你需要的赋值规则

效果验证

针对你给出的示例数据,执行代码后得到的结果如下:

A       B  C
0  001     USA  1
1  002  Canada  1
2  003   China  1
3  004   India  1
4  005      UK  1
5  006   Japan  1
6  007     USA  0
7  008      UK  0

扩展用法

如果需要判断多列组合是否为首次出现(比如同时校验A列和B列的组合值),只需要传入列名列表即可:

# 标记A、B两列组合值的首次出现
df['C'] = (~df[['A', 'B']].duplicated()).astype(int)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:18:22