如何在Pandas DataFrame中标记两列映射不匹配的记录
Pandas 双列一一映射校验标记方案
实现思路
要判断A、B两列是否满足双向唯一映射,只要满足以下两个条件之一即不符合规则,标记为1:
- 同一个A值对应了多个不同的B值
- 同一个B值对应了多个不同的A值
实现代码
import pandas as pd # 统计每个A对应的B的唯一值数量 a_map_cnt = df.groupby('column A')['Column B'].transform('nunique') # 统计每个B对应的A的唯一值数量 b_map_cnt = df.groupby('Column B')['column A'].transform('nunique') # 只要有一个统计值大于1就标记为1,否则为0 df['New Column'] = ((a_map_cnt > 1) | (b_map_cnt > 1)).astype(int)
效果验证
用你提供的示例数据测试,输出结果和参考完全一致:
| column A | Column B | New Column |
|---|---|---|
| Atlanta | GA | 0 |
| Atlanta | GA | 0 |
| Newyork | NY | 1 |
| Newyork | YN | 1 |
| company1 | Com | 1 |
| company | Com | 1 |
| company | Com | 1 |
内容的提问来源于stack exchange,提问作者Daven1
相关产品推荐
相关产品推荐

