Подтвердить что ты не робот

Использование str.contains() в pandas с помощью dataframes

Мне интересно, есть ли более эффективный способ использовать функцию str.contains() в Pandas, чтобы искать сразу две частичные строки. Я хочу выполнить поиск по определенному столбцу в dataframe для данных, содержащих либо "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'

Есть ли быстрый способ сделать это? Спасибо за любую помощь, я новичок, но я ЛЮБЛЮ pandas для перебора данных.

4b9b3361

Ответ 1

Это одно регулярное выражение и должно быть в одной строке:

"nt|nv"  # rather than "nt" | " nv"
f_recs[f_recs['Behavior'].str.contains("nt|nv", na=False)]

Python не позволяет использовать оператор или (|) для строк:

In [1]: "nt" | "nv"
TypeError: unsupported operand type(s) for |: 'str' and 'str'