按索引过滤 pandas - Keyerror

Filtering in pandas by index - Keyerror

我正在尝试在 Pandas 中过滤选定的时间段。 (已添加图片)开始日期和结束日期将在输入框中输入。

"Day"在索引列中找到,但是第三行给出错误信息。

df = pd.read_excel('prices.xlsx', index_col=0)
df.iloc[::-1]
filtered_date = df[(df['Day'] >= 'start_date') & (df['Day'] <= 'end_date')]

我收到 "KeyError" 消息。我用谷歌搜索 key_error 如果字典中的键不可用,就会发生。我的代码中没有使用字典,而且我不知道如何修复它。键 "Day" 确实是第一个(索引)行的第一个值。

谢谢。

This is my dataframe

查看您的 DataFrame 的图片:

  • "regular" 列的所有名称都位于较高位置。
  • "Day"位置稍微低一点,说明是名字 索引列。

您的代码包含 df['Day'],因此您尝试引用 regular 名为 Day 的列。 由于此名称的常规列不存在,因此抛出异常。

有两种方法可以解决这个问题:

  1. 从对 read_excel 的调用中删除 index_col=0。这样 Day 将 成为 常规 列,因此您的以下代码应该有效。
  2. df['Day'] 更改为 df.index。这样你就可以参考 index.

当然,用任何有效的日期字符串代替 start_dateend_date.

还有一件事需要考虑:因为 Day 实际上是一个列持有 dates,它应该有 datetime 类型。所以也许你应该添加 parse_dates=[0] 参数到 read_excel,将此列从 字符串日期时间.