Pandas преобразование объекта String в нижний регистр и проверку строки
У меня есть следующий код
import pandas as pd
private = pd.read_excel("file.xlsx","Pri")
public = pd.read_excel("file.xlsx","Pub")
private["ISH"] = private.HolidayName.str.lower().contains("holiday|recess")
public["ISH"] = public.HolidayName.str.lower().contains("holiday|recess")
Я получаю следующую ошибку:
AttributeError: 'Series' object has no attribute 'contains'
Есть ли способ преобразовать столбец 'HolidayName' в нижний регистр, а затем проверить регулярное выражение ("Holiday|Recess")
, используя .contains
за один шаг?
Ответы
Ответ 1
private["ISH"] = private.HolidayName.str.contains("(?i)holiday|recess")
(?i)
в шаблоне regex сообщает модулю re
игнорировать регистр.
Причина, по которой вы получали ошибку, состоит в том, что объект Series не имеет метода contains
; вместо этого атрибут Series.str
имеет метод contains
. Таким образом, вы можете избежать ошибки:
private["ISH"] = private.HolidayName.str.lower().str.contains("holiday|recess")
Ответ 2
Я немного опоздал на вечеринку, но вы могли бы использовать регистр клавиш: bool, по умолчанию True, если True, чувствительно к регистру.
private["ISH"] = private.HolidayName.str.contains("holiday|recess", case=False)
public["ISH"] = public.HolidayName.str.contains("holiday|recess", case=False)