我搜索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(".","")
引起了错误。
任何帮助将不胜感激
答案 0 :(得分:2)
应为str.contains
,因为contains
是str
的访问者,而不是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)