我的数据框有一个列['Busler Group'],它包含苹果,苹果,芒果,芒果等字符串。 我需要过滤出包含部分单词的列中的字符串,例如“app”或“man”。
以下是原始代码:
AttributeError: Can only use .str accessor with string values, which use
np.object_ dtype in pandas
这是错误:
{{1}}
答案 0 :(得分:0)
演示:
In [2]: df
Out[2]:
Busler Group
0 a regular string
1 an Apple
2 Do you like Mango
3 I hate mangos
4 Newton's apple
5 another string
In [3]: search_strings = ['app','man']
In [4]: pat = '(?:{})'.format('|'.join(search_strings))
In [5]: pat
Out[5]: '(?:app|man)'
In [7]: df = df[~df['Busler Group'].str.lower().str.contains(pat)]
In [8]: df
Out[8]:
Busler Group
0 a regular string
5 another string
答案 1 :(得分:0)
它必须是.str工作的对象类型:
In [11]: s1 = pd.Series([1, 2, 3])
In [12]: s1.str.contains("2")
AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas
您可以通过使列str类型强制执行此操作:
In [13]: s1.astype(str).str.contains("2")
Out[13]:
0 False
1 True
2 False
dtype: bool