【问题标题】:KeyError returned during filtering in pandas在 Pandas 中过滤期间返回的 KeyError
【发布时间】:2020-08-19 00:37:14
【问题描述】:

我正在尝试过滤两列。我正在寻找来自Col1Col2 的包含单词"car washing""train" 的行。

我试过如下:

filtered=df[df['Col1','Col2'].str.lower().str.contains('car washing','train')]

但是,我收到以下错误:

  2645             try:
-> 2646                 return self._engine.get_loc(key)
   2647             except KeyError:
...

KeyError: ('Col1', 'Col2')

您能否告诉我为什么会收到此错误以及如何解决?

谢谢

【问题讨论】:

  • 要访问列列表,应使用双括号:df[['Col1','Col2']]
  • 谢谢@QuangHoang。我错过了
  • 但是,在编辑后,我收到以下错误:AttributeError: 'DataFrame' object has no attribute 'str'
  • @still_learning 是你的条件 both '洗车' 和 'train' 还是 either 匹配工作?您可以执行以下操作:stackoverflow.com/questions/61390726/…,尽管使用 DataFrame,我们需要按列应用它,而不是太不同。
  • 嗨@ALollz。它既适用于“洗车”,也适用于“火车”

标签: python pandas


【解决方案1】:

你可以这样做:

filtered=df[df[['Col1','Col2']].sum(axis=1).str.contains('car washing|train', case=False)]

【讨论】:

    【解决方案2】:

    这里的 KeyError 很可能是指名称为“Col1”和“Col2”的列不存在。导入数据集时,您可以使用 sep = '\s*,\s*' 处理列名中的空格。参考这个:Key error when selecting columns in pandas dataframe after read_csv

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-06
      • 1970-01-01
      • 2014-07-01
      • 2017-07-09
      相关资源
      最近更新 更多