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
相关产品推荐
相关产品推荐

