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

如何校验取值体系不同的两个DataFrame列的匹配度并统计不匹配项数

解决方案

实现逻辑:先基于给定的映射规则构造字典,将其中一列转换为和另一列相同的格式后逐行对比,统计不匹配的总数即可。

完整代码示例

import pandas as pd

# 1. 定义映射规则,可根据需求选择数字转年龄段或者年龄段转数字的映射
# 此处以数字转年龄段为例
num_to_age = {
    '0': '00-04',
    '1': '05-09',
    '2': '10-14',
    '3': '15-19',
    '4': '20-24',
    '5': '25-29',
    '6': '30-34'
}

# 你的原始数据,可替换为实际读取的数据
A = pd.DataFrame(['30-34', '20-24', '20-24', '15-19', '00-04'])
B = pd.DataFrame(['6','4', '4', '3', '0'])

# 2. 先校验两个列长度是否一致
if len(A) != len(B):
    mismatch_count = abs(len(A) - len(B))
    print(f"两个列长度不一致,默认统计长度差值为不匹配数:{mismatch_count}")
else:
    # 3. 将B列的数字映射为对应的年龄段
    B_mapped = B.iloc[:, 0].map(num_to_age)
    # 4. 统计不匹配的总条数,非法取值(不在映射规则内的取值)也会被统计为不匹配
    mismatch_count = (A.iloc[:, 0] != B_mapped).sum()

print(f"不匹配的元素总数为:{mismatch_count}")

输出结果

运行上述示例代码,输出结果为0,和预期一致。

补充说明

如果你的DataFrame有明确的列名,将代码中的iloc[:, 0]替换为对应列名即可,例如A的列名为age_range、B的列名为age_code,则对应写法为A['age_range']、B['age_code']。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:45:03