Python如何检查DataFrame中word与color两列的映射一致性
检查DataFrame单词与颜色映射一致性的方法
- 方法1:分组统计唯一值
按word分组后统计每个单词对应的color唯一值数量,只要有单词的唯一值数量大于1,就说明存在映射不一致的情况:
如果返回的# 筛选出映射不一致的单词 inconsistent_words = df.groupby('word')['color'].nunique()[lambda x: x > 1] # 验证所有映射是否全部一致,返回True则全部一致 is_all_consistent = inconsistent_words.emptyinconsistent_words为空,说明所有单词对应的颜色都固定,否则结果里会列出所有存在映射冲突的单词。 - 方法2:去重校验
因为每个单词恰好出现2次,如果映射一致的话,word和color两列联合去重后,每个单词只会出现1次,不会有重复:dedup_df = df.drop_duplicates(subset=['word', 'color']) # 校验去重后是否有重复的单词,返回True则全部一致 is_all_consistent = not dedup_df['word'].duplicated().any() - 方法3:定位不一致的行
如果你需要直接找到映射冲突的具体行,可以用分组取首次出现的颜色做对比:
返回的# 给每个行匹配对应单词第一次出现的颜色 df['first_match_color'] = df.groupby('word')['color'].transform('first') # 筛选出颜色不一致的行 inconsistent_rows = df[df['color'] != df['first_match_color']]inconsistent_rows就是所有存在映射冲突的记录,可直接查看具体内容。
内容的提问来源于stack exchange,提问作者Lyam
相关产品推荐
相关产品推荐

