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

遍历DataFrame列表转OIL PROD列float求和报KeyError解决方法

报错原因

报KeyError的本质是你这76个DataFrame里,至少有一个没有叫OIL PROD的列。大概率是列名带了看不见的前后空格、大小写不匹配,或者个别表本来就缺失这列。
另外你原来的代码还有个隐藏坑:所有列都是object类型,OIL PROD列里很可能混了非数值内容,比如表示空值的-、空字符串、零散备注文字之类的,直接调用astype("float")会触发ValueError,代码跑一半就会中断。

解决方法
  • 先执行下面这段代码,把所有表的列名都打印出来,定位列名异常的表:
for idx, df in enumerate(df_clean):
    print(f"第{idx}个表的列名列表:{df.columns.tolist()}")
  • 列名核对完成后,用下面的代码做求和计算,自动兼容列名带空格、内容含非数值、个别表缺列的场景,不会随意中断:
oil_sum = []
for df in df_clean:
    # 先统一标准化列名:去除前后空格、全部转为大写,对齐目标列名格式
    df.columns = [col.strip().upper() for col in df.columns]
    if "OIL PROD" not in df.columns:
        # 缺列的位置可以按需替换成0或者其他填充值,这里示例填充None并打印提示
        oil_sum.append(None)
        print(f"第{len(oil_sum)-1}个表缺失OIL PROD列,已填充None")
        continue
    # 转float时设置errors="coerce",无法转成数值的内容会自动转为空值NaN,sum计算时会自动忽略空值
    single_sum = df["OIL PROD"].astype("float", errors="coerce").sum()
    oil_sum.append(single_sum)
  • 如果核对后发现实际列名和OIL PROD拼写不一致,把代码里对应的列名字符串替换成实际正确的列名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 06:48:31