팬더에서 str.contains() 함수를 사용하여 한 번에 두 개의 부분 문자열을 검색하는 것이 더 효율적인 방법인지 궁금합니다. "nt"또는 "nv"가 포함 된 데이터에 대해 데이터 프레임의 특정 열을 검색하려고합니다. 바로 지금 내 코드는 다음과 같습니다.데이터 프레임이있는 팬더에서 str.contains() 사용
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'
빠른 방법이 있습니까? 어떤 도움을 주셔서 감사합니다, 나는 초보자이지만 사랑하는 팬더와 논쟁을하고 있습니다.
덕분에 이러한 아름다움을! . 그러나 파이프와 검색 단어 사이에는 공백이 없어야합니다. – jaknap32
@ jaknap32 :'(? x)'한정자를 사용한다면, 원하는 곳마다 공백을 추가 할 수 있습니다. ("? (x) nt | nv"'-하지만 패턴에 의미가있는 공백이 있다면 '#'char)뿐만 아니라 그것들을 이스케이프한다. [Python're.X' docs] (https://docs.python.org/2/library/re.html#re.VERBOSE)를 참조하십시오. 어쨌든,'n [tv]'는'nt | nv'보다 나은 정규 표현식입니다. –
"na = False"표현식에 +1. 내 데이터에 틈이있어 문자열에 함수가 없으면 작동하지 않습니다. –