簡體   English   中英

如何在 Pandas 數據幀中將 str.contains() 與多個表達式一起使用?

[英]How to use str.contains() with multiple expressions, in pandas dataframes?

我想知道是否有更有效的方法來使用 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'

有沒有快速的方法來做到這一點? 感謝您的幫助,我是一個初學者,但我很喜歡用熊貓來處理數據。

它們應該是一個正則表達式,並且應該在一個字符串中:

"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'

我試試這個,它的工作:

df[df['Behavior'].str.contains('nt|nv', na=False)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM