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

如何在Pandas中标记指定列组合是否唯一?

问题:为DataFrame添加判断组合唯一性的列

给定如下DataFrame:

import pandas as pd
data = {'name': ['Tom', 'nick', 'krish', 'jack','Tom','Tom'],
        'surname': ['smith', 'nielsen', 'hawk', 'boxer','bless','smith'],
        'job': ['boxer', 'writer', 'officer', 'driver','barman','boxer'],
        'salary': [200, 100, 300, 200,500,1000],
        }

df = pd.DataFrame(data)

需要添加名为is only的新列:当name、surname、job三列的取值组合唯一时,列值为true;若组合重复则为false,最终期望输出如下:

name  surname      job  salary is only
0    Tom    smith    boxer     200   false
1   nick  nielsen   writer     100    true
2  krish     hawk  officer     300    true
3   jack    boxer   driver     200    true
4    Tom    bless   barman     500    true
5    Tom    smith    boxer    1000   false

解决方案

可以利用Pandas的duplicated()方法快速实现需求,步骤如下:

  1. 使用duplicated()标记重复的组合行:指定subset参数为需要判断的三列,keep=False会将所有重复出现的组合行都标记为True
  2. 对标记结果取反,得到唯一组合的行(标记为True)
  3. 将布尔值转换为小写字符串'true'/'false',赋值给新列is only

完整代码:

# 添加新列并标记唯一性
df['is only'] = ~df.duplicated(subset=['name', 'surname', 'job'], keep=False)
# 转换为目标字符串格式
df['is only'] = df['is only'].map({True: 'true', False: 'false'})

# 输出结果
print(df)

运行后即可得到符合要求的DataFrame。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 20:22:09