首页 > 解决方案 > 错误:系列'对象没有属性'包含'”

问题描述

我搜索我的 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(".","")是导致错误。

任何帮助,将不胜感激

标签: python-3.xpandasdataframe

解决方案


应该是str.contains因为containsstrnot的访问器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)

推荐阅读