Pandas: dataframe의 모든 열에서 문자열 검색


다음 구문을 사용하여 Pandas DataFrame의 각 열에서 특정 문자열을 검색하고 하나 이상의 열에 해당 문자열이 포함된 행을 필터링할 수 있습니다.

 #define filter
mask = np. column_stack ([df[col]. str . contains (r " my_string ", na= False ) for col in df])

#filter for rows where any column contains 'my_string'
df. loc [mask. any (axis= 1 )]

다음 예에서는 실제로 이 구문을 사용하는 방법을 보여줍니다.

예: Pandas DataFrame의 모든 열에서 문자열 검색

팀에서 다양한 농구 선수의 첫 번째 역할과 두 번째 역할에 대한 정보가 포함된 다음과 같은 pandas DataFrame이 있다고 가정합니다.

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' player ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
                   ' first_role ': ['P Guard', 'P Guard', 'S Guard', 'S Forward',
                                  'P Forward', 'Center', 'Center', 'Center'],
                   ' second_role ': ['S Guard', 'S Guard', 'Forward', 'S Guard',
                                   'S Guard', 'S Forward', 'P Forward', 'P Forward']})

#view DataFrame
print (df)

  player first_role second_role
0 AP Guard S Guard
1 BP Guard S Guard
2 CS Guard Forward
3DS Forward S Guard
4 EP Forward S Guard
5 F Center S Forward
6 G Center P Forward
7 H Center P Forward

다음 코드는 열에 “Guard”라는 문자열이 나타나는 행에 대해 pandas DataFrame을 필터링하는 방법을 보여줍니다.

 import numpy as np

#define filter
mask = np. column_stack ([df[col]. str . contains (r " Guard ", na= False ) for col in df])

#filter for rows where any column contains 'Guard'
df. loc [mask. any (axis= 1 )]

        player first_role second_role
0 A P Guard S Guard
1 B P Guard S Guard
2 C S Guard Forward
3 D S Forward S Guard
4 E P Forward S Guard

결과 DataFrame의 각 행에는 적어도 하나의 열에 “Guard”라는 문자열이 포함되어 있습니다.

Pandas에서 “OR” 연산자( | )를 사용하여 여러 문자열 중 하나가 하나 이상의 열에 나타나는 행을 필터링할 수도 있습니다.

예를 들어 다음 코드는 하나 이상의 열에 “P Guard” 또는 “Center”가 나타나는 행을 필터링하는 방법을 보여줍니다.

 import numpy as np

#define filter
mask = np. column_stack ([df[col]. str . contains (r " P Guard|Center ", na= False ) for col in df])

#filter for rows where any column contains 'P Guard' or 'Center'
df. loc [mask. any (axis= 1 )]

        player first_role second_role
0 A P Guard S Guard
1 B P Guard S Guard
5 F Center S Forward
6 G Center P Forward
7 H Center P Forward

결과 DataFrame의 각 행에는 하나 이상의 열에 “P Guard” 또는 “Center”가 포함되어 있습니다.

참고 : contain() 함수에 na=False 인수를 포함하는 것이 중요합니다. 그렇지 않으면 DataFrame에 NaN 값이 있는 경우 오류가 발생합니다.

추가 리소스

다음 튜토리얼에서는 Pandas에서 다른 일반적인 필터링 작업을 수행하는 방법을 설명합니다.

열 값으로 Pandas DataFrame을 필터링하는 방법
Pandas DataFrame 행을 날짜별로 필터링하는 방법
여러 조건에서 Pandas DataFrame을 필터링하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다