问题 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 一步到位?

任何帮助,将不胜感激


4454
2018-04-07 09:56


起源

如果将术语转换为小写,它们将永远不会包含大写字母 H 要么 R.. - DSM
谢谢你指出这一点。当我输入我的例子时,这是一种疏忽。修好了。 - user1452759


答案:


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

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


您收到错误的原因是因为Series对象没有 contains 方法;而是 Series.str 属性有 contains 方法。所以你可以避免错误:

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

15
2018-04-07 10:07



十分感谢你的帮助。这工作:) - user1452759
太好了!这是在某个地方的文档?这是一个特定于熊猫的东西,还是别的东西?猜猜别的。 - grisaitis
@grisaitis:矢量化字符串方法是 记录在这里。指某东西的用途 (?i) 做不区分大小写的模式匹配是Python的一部分 re 模块 正则表达式语法。 (搜索字符串 (?iLmsux))。 - unutbu
遗憾的是,这个问题的最佳答案涉及对RE的深刻了解。 N00bs(比如我自己)正在寻找链接str操作。 - BobHy