본문 바로가기
파이썬

파이썬 How to use str.contains() with multiple expressions, in pandas dataframes?

by º기록 2021. 1. 5.
반응형

Pandas에서 str.contains () 함수를 사용하여 한 번에 두 개의 부분 문자열을 검색하는 더 효율적인 방법이 있는지 궁금합니다. "nt"또는 "nv"가 포함 된 데이터에 대한 데이터 프레임의 특정 열을 검색하고 싶습니다. 지금 내 코드는 다음과 같습니다.

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

그런 다음 한 결과를 다른 결과에 추가합니다. 제가하고 싶은 것은 한 줄의 코드를 사용하여 "nt"OR "nv"OR "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'

 

참조 페이지 https://stackoverflow.com/questions/19169649

 

 

반응형

댓글