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

如何在Python中编写通用函数批量对比Pandas合并后的多组关联列

批量对比合并后DataFrame的对应列

高效实现方案

你之前的循环逻辑既不符合_X/_Y对应列的对比需求,又没利用pandas的向量化运算优势,导致处理10万+行数据时效率极低。以下是适配你需求的高效批量处理方法:

  1. 提取对应列对
    先从合并后的Compare表中筛选出所有_X后缀的列,再匹配对应的_Y列:
# 获取所有_X结尾的列(自动排除unique_key)
x_cols = [col for col in Compare.columns if col.endswith('_X')]
  1. 批量生成对比列
    利用pandas向量化运算,一次性生成所有对比列(避免低效的逐行/双重循环):
# 字典推导式批量生成对比结果列
compare_results = {
    f"compare_{col[:-2]}": Compare[col] == Compare[f"{col[:-2]}_Y"]
    for col in x_cols
}
# 将对比结果合并到原DataFrame
Compare = pd.concat([Compare, pd.DataFrame(compare_results)], axis=1)

注意事项

  • 如果对比的是浮点数类型的列,直接用==可能因精度问题出现误判,建议改用numpy.isclose:
    import numpy as np
    compare_results = {
        f"compare_{col[:-2]}": np.isclose(Compare[col], Compare[f"{col[:-2]}_Y"], atol=1e-6)
        for col in x_cols
    }
    
  • 上述代码仅循环280次左右(列的数量),每次操作都是整列的向量化计算,完全适配10万+行的数据规模,效率比双重循环提升数个数量级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:10:31