Python Pandas TypeError:第一个参数必须是字符串或编译模式

时间:2017-08-29 15:37:21

标签: python pandas pattern-matching syntax-error

我很抱歉这个超级简单的问题,但我无法使其发挥作用

我正在清理数据,并且想要添加一个标志,如果名称(分为两列First和Last Name)是错误的。我建立了多种模式,但是现在我正在使用单独的语句,我可以将所有这些语句合并成一个吗?

pattern = "\?"
match = incremental['First_Name'].str.contains(pattern) | incremental['Last_Name'].str.contains(pattern)
incremental['Name_Flag'] = np.where(match, 'Y', '')

pattern = "tourist"
    match = incremental['First_Name'].str.contains(pattern) | incremental['Last_Name'].str.contains(pattern)
    incremental['Name_Flag'] = np.where(match, 'Y', '')

这不起作用,因为第二个语句覆盖了第一个语句。

pattern = ("tourist","/?")
        match = incremental['First_Name'].str.contains(pattern) | incremental['Last_Name'].str.contains(pattern)
        incremental['Name_Flag'] = np.where(match, 'Y', '')

我收到第二个版本的错误(并不奇怪)

TypeError: first argument must be string or compiled pattern. 

1 个答案:

答案 0 :(得分:2)

如果您正在尝试查找两种正则表达式模式 - 就像在字符串中搜索?tourist一样。您可以使用|运算符。因此,请将pattern更改为

pattern = "tourist|\?"

如果'tourist`在字符串中,这将检查问号 OR

如果您想查看正则表达式,pythex是一个非常好的地方。我为你做了一个测试。