팬더에서 끈에 목록 중 하나가 포함되어 있는지 어떻게 테스트합니까?
의 조합에 해당하는 기능이 있습니까?df.isin()그리고.df[col].str.contains()?
예를 들어 시리즈가 있다고 가정해 보겠습니다.s = pd.Series(['cat','hat','dog','fog','pet']), 그리고 나는 모든 장소를 찾고 싶다.s다음 중 하나를 포함하다['og', 'at']'펫' 빼고는 다 갖고 싶어요.
내게 해결책이 있지만, 그건 좀 고상하지 않아.
searchfor = ['og', 'at']
found = [s.str.contains(x) for x in searchfor]
result = pd.DataFrame[found]
result.any()
더 좋은 방법이 있을까요?
하나의 옵션은 regex를 사용하는 것입니다.|시리즈 워드의 각 하위 문자열과 일치시키는 문자s(아직 사용 중)str.contains).
의 단어를 결합함으로써 정규식을 구성할 수 있습니다.searchfor와 함께|:
>>> searchfor = ['og', 'at']
>>> s[s.str.contains('|'.join(searchfor))]
0 cat
1 hat
2 dog
3 fog
dtype: object
아래 댓글에서 @AndyHayden이 지적한 바와 같이 서브스트링에 다음과 같은 특수 문자가 있는 경우 주의하십시오.$그리고.^말 그대로 일치시키고 싶은 거죠이러한 문자는 정규 표현의 컨텍스트에서 특정 의미를 가지며 일치에 영향을 미칩니다.
영숫자가 아닌 문자를 이스케이프하면 하위 문자열 목록을 보다 안전하게 만들 수 있습니다.re.escape:
>>> import re
>>> matches = ['$money', 'x^y']
>>> safe_matches = [re.escape(m) for m in matches]
>>> safe_matches
['\\$money', 'x\\^y']
이 새 목록에 있는 문자열은 문자 그대로 각 문자와 일치합니다.str.contains.
사용할 수 있습니다.str.contains를 사용하여 정규식 패턴을 가진 단독OR (|):
s[s.str.contains('og|at')]
또는 시리즈를 에 추가할 수 있습니다.dataframe그 후str.contains:
df = pd.DataFrame(s)
df[s.str.contains('og|at')]
출력:
0 cat
1 hat
2 dog
3 fog
다음은 동작하는 한 줄의 람다입니다.
df["TrueFalse"] = df['col1'].apply(lambda x: 1 if any(i in x for i in searchfor) else 0)
입력:
searchfor = ['og', 'at']
df = pd.DataFrame([('cat', 1000.0), ('hat', 2000000.0), ('dog', 1000.0), ('fog', 330000.0),('pet', 330000.0)], columns=['col1', 'col2'])
col1 col2
0 cat 1000.0
1 hat 2000000.0
2 dog 1000.0
3 fog 330000.0
4 pet 330000.0
람다 적용:
df["TrueFalse"] = df['col1'].apply(lambda x: 1 if any(i in x for i in searchfor) else 0)
출력:
col1 col2 TrueFalse
0 cat 1000.0 1
1 hat 2000000.0 1
2 dog 1000.0 1
3 fog 330000.0 1
4 pet 330000.0 0
언급URL : https://stackoverflow.com/questions/26577516/how-to-test-if-a-string-contains-one-of-the-substrings-in-a-list-in-pandas
'source' 카테고리의 다른 글
| PHPExcel 자동 크기 열 폭 (0) | 2022.11.12 |
|---|---|
| 목록을 튜플 목록으로 병합하려면 어떻게 해야 합니까? (0) | 2022.11.12 |
| MySQL을 outfile로 내보내기 : CSV 이스케이프 문자 (0) | 2022.11.12 |
| 그룹별 절이 있는 SQL 업데이트 쿼리 (0) | 2022.11.12 |
| 사전을 파일에 저장하는 방법 (0) | 2022.11.11 |