【问题标题】:Filtering in pandas by index - Keyerror按索引过滤熊猫 - Keyerror
【发布时间】:2020-03-29 18:42:32
【问题描述】:

我正在尝试在 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

【问题讨论】:

标签: python pandas keyerror


【解决方案1】:

看看你的DataFrame的图片:

  • “常规”列的所有名称都位于更高的位置。
  • “天”的位置稍低,表示​​它是 索引列。

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

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

  1. 从对 read_excel 的调用中删除 index_col=0。这样Day会 是一个常规列,因此您的以下代码应该可以工作。
  2. 将 df['Day'] 更改为 df.index。这样您就可以引用 索引。

当然,用任何有效的日期字符串代替 start_date 和 end_date。

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

【讨论】:

  • 非常感谢您抽出宝贵时间为我提供详细的答复。因为我是 Python/Pandas 的初学者,所以它对我帮助很大。
猜你喜欢
  • 1970-01-01
  • 2015-05-28
  • 2017-06-03
  • 1970-01-01
  • 2021-05-23
  • 2019-03-11
  • 2018-08-09
  • 2020-01-13
  • 2021-08-01
相关资源
最近更新 更多