错误:“系列”对象没有属性“包含””

时间:2019-06-15 05:36:04

标签: python-3.x pandas dataframe

我搜索DataFrame的所有列(第一列除外),并添加一个新列'Matching_Columns',其中包含匹配列的名称, 当我在测试图案是否包含在一行中之前尝试删除所有点时,会收到错误消息。

这有效:

keyword='123456789'
f = lambda row: row.apply(str).str.contains(keyword ,na=False, flags=re.IGNORECASE)
df1 = df.iloc[:,1:].apply(f, axis=1)

df.insert(loc=1, column='Matching_Columns', value=df1.dot(df.columns[1:] + ', ').str.strip(', '))

这给了我一个错误:

keyword='123456789'
f = lambda row: row.apply(str).str.replace(".","").contains(keyword ,na=False, flags=re.IGNORECASE)
df1 = df.iloc[:,1:].apply(f, axis=1)

df.insert(loc=1, column='Matching_Columns', value=df1.dot(df.columns[1:] + ', ').str.strip(', '))

错误:

AttributeError: ("'Series' object has no attribute 'contains'", 'occurred at index 0')

我不知道这是怎么回事。好像是str.replace(".","")引起了错误。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

应为str.contains,因为containsstr的访问者,而不是series

因此,为了更好地解释这一点,str.replace返回了一个series对象。您已将contains函数注入到序列中。这就是为什么出现错误'Series' object has no attribute 'contains'

的原因
f = lambda row: row.apply(str).str.replace(".","").str.contains(keyword ,na=False, flags=re.IGNORECASE)