KeyError возвращается во время фильтрации в пандах

Я пытаюсь отфильтровать два столбца. Я ищу строки из Col1 или Col2, которые содержат слова "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')

Скажите, пожалуйста, почему я получаю эту ошибку и как ее исправить?

Спасибо


person still_learning    schedule 04.05.2020    source источник
comment
для доступа к списку столбцов следует использовать двойную скобку: df[['Col1','Col2']].   -  person Quang Hoang    schedule 04.05.2020
comment
Спасибо @QuangHoang. я пропустил его   -  person still_learning    schedule 04.05.2020
comment
Однако после редактирования я получаю следующую ошибку: AttributeError: 'DataFrame' object has no attribute 'str'   -  person still_learning    schedule 04.05.2020
comment
@still_learning является ли ваше состояние и тем, и другим «мытье машин» и «поезд» или любое из них соответствует работе?. Вы можете сделать что-то вроде: stackoverflow.com/questions/61390726/, хотя с DataFrame нам нужно будет применять его по столбцам, а не слишком по-разному.   -  person ALollz    schedule 04.05.2020
comment
Привет @ALollz. Он подходит как для «мойки автомобиля», так и для «поезда».   -  person still_learning    schedule 04.05.2020


Ответы (2)


вы можете сделать это с помощью этого:

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

KeyError здесь, скорее всего, означает, что столбцы с именами «Col1» и «Col2» не существуют. Вы можете использовать sep = '\s*,\s*', чтобы позаботиться о пробелах в именах столбцов при импорте набора данных. обратитесь к этому: Ключевая ошибка при выборе столбцов в кадр данных pandas после read_csv

person Nayan Sarkar    schedule 04.05.2020