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

50 投票
2 回答
55197 浏览
提问于 2025-04-18 01:41

我有下面这段代码:

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'这一列的内容转换成小写,然后再用.contains一步检查正则表达式("Holiday|Recess")呢?

2 个回答

24

我来得有点晚,不过你可以使用关键字参数 keyarg,类型是布尔值,默认值是 True。如果设置为 True,就会区分大小写。

private["ISH"] = private.HolidayName.str.contains("holiday|recess", case=False)
public["ISH"] = public.HolidayName.str.contains("holiday|recess", case=False)
94
private["ISH"] = private.HolidayName.str.contains("(?i)holiday|recess")

正则表达式中的 (?i) 是告诉 re 模块忽略大小写的意思。


你遇到错误的原因是因为 Series 对象没有 contains 这个方法;实际上是 Series.str 属性有这个方法。所以你可以通过以下方式避免这个错误:

private["ISH"] = private.HolidayName.str.lower().str.contains("holiday|recess")

撰写回答