如何在Pandas中判断两列是否可作为DataFrame的复合键?
判断多列组合是否唯一的方法
你提到的df['col_A', 'col_B'].is_unique写法行不通,因为is_unique是Series对象的专属属性,而df[['col_A', 'col_B']]返回的是DataFrame,没有这个属性。
要判断多列组合是否唯一(即能否作为复合键),有两种简洁的实现方式:
方法1:用duplicated()检查重复行
通过duplicated()标记指定列组合的重复行,再用any()判断是否存在重复:
# 检查col_A和col_B的组合是否有重复 has_duplicates = df.duplicated(subset=['col_A', 'col_B']).any() # 无重复则组合唯一 is_unique = not has_duplicates
针对你的示例DataFrame,执行后is_unique会返回True——四行的col_A+col_B组合均不重复。
方法2:对比去重前后的行数
用drop_duplicates()去掉指定列组合的重复行,对比去重前后的行数是否一致:
# 计算去重后的行数 unique_rows_count = len(df[['col_A', 'col_B']].drop_duplicates()) # 行数相等则说明组合无重复 is_unique = unique_rows_count == len(df)
这种方式更直观,直接通过行数差异判断重复情况。
内容的提问来源于stack exchange,提问作者Shaida Muhammad
相关产品推荐
相关产品推荐

