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

Pandas遍历映射表批量创建_x/_z列值对比列报错排查

代码错误排查

你的循环代码报错核心是3个书写问题:

  • 变量名拼写不一致:你定义的映射表变量名为header_comp,循环代码中错写为header_match、header_matrch,拼写错误会导致程序找不到对应对象,触发列不存在类报错。
  • 括号配对错误:对比列值的逻辑括号错位,你写的df[header_match.iloc[i,1]==df[header_match.iloc[i,2]]会把布尔判断结果当成列名去DataFrame中索引,直接触发列查找错误。
  • 列名拼接不符合预期:你需要生成a_comp格式的列名,代码中拼接的是' comp'(comp前带空格),会生成带空格的错误列名。
可直接运行的正确代码

基础数据构造(复现测试用)

import pandas as pd
# 构造原始业务数据集
df = pd.DataFrame({
    'a_x':['a','b','c'],'b_x':['a','b','c'] ,'c_x':['a','b','c'],'d_x':['a','b','c'],
    'a_z':['a','b','i'],'b_z':['a','t','c'] ,'c_z':['c','c','c'],'d_z':['a','b','c']
})
# 构造列映射关系表
header_comp = pd.DataFrame({
    'original':['a','b','c','d'],
    '_x':['a_x','b_x','c_x','d_x'],
    '_z':['a_z','b_z','c_z','d_z']
})

循环实现(修正后)

for idx in range(len(header_comp)):
    orig_col = header_comp.iloc[idx, 0]
    x_col = header_comp.iloc[idx, 1]
    z_col = header_comp.iloc[idx, 2]
    # 逐行对比两列值,相等赋值1否则0
    df[f'{orig_col}_comp'] = (df[x_col] == df[z_col]).astype(int)

实现效果验证

执行代码后输出的df与预期结果完全一致:

a_x b_x c_x d_x a_z b_z c_z d_z  a_comp  b_comp  c_comp  d_comp
0   a   a   a   a   a   a   c   a       1       1       0       1
1   b   b   b   b   b   t   c   b       1       0       0       1
2   c   c   c   c   i   c   c   c       0       1       1       1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 06:21:19