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

pandas比较DataFrame两个数值列筛选数据时触发KeyError: 'Today'如何解决?

KeyError: 'Today'报错原因及解决方案

核心报错原因

KeyError本质是pandas在数据集的列名中找不到你指定的'Today'字段,常见的触发场景有三类:

  • 列名带多余的前后空格:导入数据时如果原始文件的表头字段前后有空格,会被pandas直接读取为列名的一部分,导致实际列名是' Today '/'Today '而非你认为的'Today',这是这类问题最常见的诱因
  • 表头读取配置错误:读取数据集时没有指定正确的表头参数,把第一行数据当成了列名,或者跳过了表头行,导致实际列名中没有'Today'
  • 数据集被意外修改:执行筛选代码前,你对petrole_price做过赋值、切片、合并等修改操作,覆盖了原始数据集的列结构,导致'Today'列被删除

解决步骤

  1. 先打印当前数据集的实际列名,确认问题根源:
print(petrole_price.columns.tolist())
  1. 根据打印结果对应处理:
  • 如果是列名带空格的情况,先批量去除所有列名的前后空白字符:
petrole_price.columns = petrole_price.columns.str.strip()

处理完成后再运行你原来的筛选代码即可正常执行:

petrole_price = petrole_price[petrole_price['Today'] > petrole_price['Yesterday']]
  • 如果是表头读取错误,重新导入数据集时指定正确的表头参数,以csv文件为例:
import pandas as pd
petrole_price = pd.read_csv("你的数据集文件路径.csv", header=0)

其中header=0表示将文件的第一行作为列名读取。

  • 如果是数据集被意外修改,回溯筛选代码之前的逻辑,修正对petrole_price的错误操作后再运行筛选逻辑即可。

按照你的样例数据,最终筛选得到的结果会保留India、UAE、Russia三行记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:45:04