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

Pandas读取txt文件筛选列时报Key Error:指定列均不存在问题咨询

Pandas读取竖线分隔TXT文件选取列KeyError报错原因定位

首先运行以下代码查看DataFrame实际解析得到的列名:

print(customer_master_df.columns.tolist())

将输出的列名和你选取的列名列表逐一比对,常见报错原因如下:

  • 列名存在前后空格/不可见字符
    这是竖线分隔类文本文件最常见的问题,原始文件表头字段前后可能自带空格,导致实际列名为" CUSTOMER_NUM "而非你写的"CUSTOMER_NUM"。
    解决方案:读取文件时添加skipinitialspace=True参数,或者读取后统一清理列名:
    # 方案1:读取时直接跳过字段前的空格
    customer_master_df = pd.read_csv(customer_master_loc, sep='|', skipinitialspace=True, dtype=str, on_bad_lines='skip')
    # 方案2:读取后清理列名前后空格
    customer_master_df.columns = customer_master_df.columns.str.strip()
    
  • 列名拼写/大小写不匹配
    原始文件表头可能存在拼写差异、大小写差异,比如实际列名是小写的customer_num,或者单词拼写和你写的不一致,对照打印出的列名修改选取列表的拼写即可。
  • 文件第一行不是表头
    如果原始TXT文件的第一行是数据而非字段名,pandas会默认将第一行数据识别为列名,自然找不到你指定的字段。
    解决方案:读取时指定header=None,并手动传入列名列表:
    col_list = ['CUSTOMER_NUM','CUSTOMER_NAME','CUSTOMER_NAME2','CUSTOMER_ADDR_LN1',
                'CUSTOMER_ADDR_LN2','CUSTOMER_ADDR_LN3','CUSTOMER_ADDR_LN4',
                'CUSTOMER_CITY','STATE_CD','CUSTOMER_ZIP_BASE','COUNTY','SALESBLOCK_CD',
                'ORGANIZATION_CD','LOSER_FLAG','SHARED_CUSTOMER_NUM','SHARED_CUSTOMER_FLAG','SHARED_CUSTOMER_ORGANIZATION_CD','WINNER_CUSTOMER_NUM','WINNER_CUSTOMER_FLAG','WINNER_CUSTOMER_ORGANIZATION_CD']
    customer_master_df = pd.read_csv(customer_master_loc, sep='|', header=None, names=col_list, dtype=str, on_bad_lines='skip')
    
  • 坏行跳过导致表头解析异常
    你代码中使用的error_bad_lines=False是pandas旧版本参数,高版本中已替换为on_bad_lines='skip',如果存在大量格式错误的行,可能会导致表头解析错位。可以先去掉跳过坏行的参数运行,查看是否有文件格式错误的提示,确认文件分隔符、行格式是否统一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:09:02