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)