Joh*_*Doe 2 dataframe python-3.x pandas
我搜索我的 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(', '))
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误:
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(', '))
Run Code Online (Sandbox Code Playgroud)
错误:
AttributeError: ("'Series' object has no attribute 'contains'", 'occurred at index 0')
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚这有什么问题。看起来str.replace(".","")是导致错误的原因。
任何帮助,将不胜感激
应该是str.contains因为containsis 是strnot 的访问器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)
Run Code Online (Sandbox Code Playgroud)