Pandas将String对象转换为小写并检查字符串

use*_*759 18 python pandas

我有以下代码

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")
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

AttributeError: 'Series' object has no attribute 'contains'
Run Code Online (Sandbox Code Playgroud)

反正到"HolidayName"列转换为小写,然后检查正则表达式("Holiday|Recess")使用.contains一步到位?

任何帮助,将不胜感激

unu*_*tbu 32

private["ISH"] = private.HolidayName.str.contains("(?i)holiday|recess")
Run Code Online (Sandbox Code Playgroud)

(?i)在正则表达式告诉re模块忽略大小写.


您收到错误的原因是Series对象没有该contains方法; 相反,该Series.str属性具有该contains方法.所以你可以避免错误:

private["ISH"] = private.HolidayName.str.lower().str.contains("holiday|recess")
Run Code Online (Sandbox Code Playgroud)


小智 5

我参加聚会有点晚,但是您可以使用keyarg大小写:bool,默认为True,如果为True,则区分大小写。

private["ISH"] = private.HolidayName.str.contains("holiday|recess", case=False)
public["ISH"] = public.HolidayName.str.contains("holiday|recess", case=False)
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考 - 检查了所有 3 种方法(链接 str、使用 regex、使用 case=False).....结果发现 regex 是最快的,case=False 方法大约长 1.25 倍,链接 str 大约长 1.06 倍 (2认同)