我想知道是否有更有效的方法在Pandas中使用str.contains()函数,一次搜索两个部分字符串。我想在数据框中搜索包含“nt”或“nv”的数据的给定列。现在,我的代码看起来像这样:
df[df['Behavior'].str.contains("nt", na=False)]
df[df['Behavior'].str.contains("nv", na=False)]
然后我将一个结果追加到另一个。我想做的是使用一行代码来搜索包含“nt”或“nv”或“nf”的任何数据。我已经玩了一些我认为应该工作的方法,包括在术语之间插入管道,但所有这些都会导致错误。我已经检查了文档,但我不认为这是一个选项。我得到这样的错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-113-1d11e906812c> in <module>()
3
4
----> 5 soctol = f_recs[f_recs['Behavior'].str.contains("nt"|"nv", na=False)]
6 soctol
TypeError: unsupported operand type(s) for |: 'str' and 'str'
有快速的方法吗?感谢您的帮助,我是初学者,但我喜欢数据争吵的熊猫。
答案 0 :(得分:45)
是一个正则表达式,应该在一个字符串中:
"nt|nv" # rather than "nt" | " nv"
f_recs[f_recs['Behavior'].str.contains("nt|nv", na=False)]
Python不允许您对字符串使用or(|
)运算符:
In [1]: "nt" | "nv"
TypeError: unsupported operand type(s) for |: 'str' and 'str'
答案 1 :(得分:0)
我尝试了这个,它起作用了
df[df['Behavior'].str.contains('nt|nv', na=False)]