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

读取最新CSV文件创建file_name列时触发KeyError错误求助

解决新增file_name列时触发KeyError的问题

我尝试从本地文件夹读取两个最新的.csv文件,给每个读取后的DataFrame新增file_name列存储对应文件名,但运行代码时一直触发KeyError: 'file_name'错误,相关代码如下:

files = glob.glob(r"path\*.csv")
sorted_files = sorted(files, key=os.path.getmtime, reverse = True) #按修改时间从新到旧排序文件
buyandsell_df = []
for index, file in enumerate(sorted_files):
    if index == 2: #仅从排序后的文件列表中打开两个最新文件
        break
    else:
        print("READING IN " + file)
        df = pd.read_csv(file, usecols=['language','title','contract_number','publishing_status','award_date','publication_date','amendment_date','contract_value'], low_memory = False)
        df['file_name'] = file
        df = df.loc[df['language'] == 'English'] #过滤法语重复项
        buyandsell_df.append(df)

可能的原因及修复方案

  1. 循环逻辑优化
    原代码中if index == 2: break虽然能实现读取前两个文件,但逻辑不够直观,换成index >= 2更清晰,避免因循环计数误解导致的问题。

  2. 列读取流程调整
    原代码用usecols直接指定列读取,若某个csv文件缺少指定列,可能引发后续异常。调整为先读取全部列再筛选需要的列,能更灵活处理列缺失的情况,同时确保file_name列添加后稳定存在。

  3. 修改后的代码

import glob
import os
import pandas as pd

files = glob.glob(r"path\*.csv")
sorted_files = sorted(files, key=os.path.getmtime, reverse=True)
buyandsell_df = []

for index, file in enumerate(sorted_files):
    if index >= 2:  # 读取前两个最新文件,逻辑更清晰
        break
    print(f"READING IN {file}")
    # 先读取全部列,再筛选需要的列,避免usecols导致的列缺失问题
    df = pd.read_csv(file, low_memory=False)
    # 定义需要保留的列,确保后续操作有可靠的数据基础
    required_cols = ['language','title','contract_number','publishing_status','award_date','publication_date','amendment_date','contract_value']
    # 筛选列,若csv中缺少某列,会自动填充NaN,避免直接报错
    df = df[required_cols]
    # 添加文件名列,此时df一定存在该列
    df['file_name'] = file
    # 过滤英文条目
    df = df[df['language'] == 'English']
    buyandsell_df.append(df)
  1. 额外排查点
  • 检查print输出的文件路径是否正确,确保glob确实读取到了目标csv文件;
  • 若仍报错,可在添加file_name列后加入print(df.columns),确认该列是否存在;
  • 检查目标csv文件是否为空,空文件读取后添加列仍会保留列名,后续操作不会触发KeyError,但如果有合并等操作,可提前跳过空文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 12:15:35