Pandas DataFrame에서 특정 문자열을 포함하지 않는 행 찾기
Pandas DataFrame에서 특정 문자열을 포함하지 않는 행을 찾는 방법을 알아보고 싶습니다.
해결책:
~df['column'].str.contains(pattern) 사용:
이 방법은 ~
연산자를 사용하여 str.contains()
결과를 부정합니다. ~df['column'].str.contains(pattern)
은 pattern
문자열을 포함하는 행을 False로, 포함하지 않는 행을 True로 반환합니다.
import pandas as pd
# 예시 데이터 생성
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
'city': ['Seattle', 'New York', 'San Francisco', 'Los Angeles']}
df = pd.DataFrame(data)
# 'city' 열에 'Seattle' 문자열을 포함하지 않는 행 찾기
not_seattle = ~df['city'].str.contains('Seattle')
print(df[not_seattle])
출력:
name city
1 Bob New York
2 Charlie San Francisco
3 David Los Angeles
not pattern in df['column'] 사용:
이 방법은 not
연산자와 in
연산자를 사용하여 pattern
문자열이 DataFrame 열의 값에 포함되어 있는지 확인합니다. not pattern in df['column']
은 pattern
문자열을 포함하는 행을 False로, 포함하지 않는 행을 True로 반환합니다.
import pandas as pd
# 예시 데이터 생성
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
'city': ['Seattle', 'New York', 'San Francisco', 'Los Angeles']}
df = pd.DataFrame(data)
# 'city' 열에 'Seattle' 문자열을 포함하지 않는 행 찾기
not_seattle = 'Seattle' not in df['city']
print(df[not_seattle])
name city
1 Bob New York
2 Charlie San Francisco
3 David Los Angeles
참고:
- 두 방법 모두 동일한 결과를 제공합니다.
pattern
문자열은 정규 표현식일 수 있습니다.na=False
매개변수를 사용하여 NaN 값을 처리할 수 있습니다.
예제 코드: Pandas DataFrame에서 특정 문자열을 포함하지 않는 행 찾기
import pandas as pd
# 예시 데이터 생성
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
'city': ['Seattle', 'New York', 'San Francisco', 'Los Angeles']}
df = pd.DataFrame(data)
# 방법 1: ~df['column'].str.contains(pattern) 사용
# 'city' 열에 'Seattle' 문자열을 포함하지 않는 행 찾기
not_seattle = ~df['city'].str.contains('Seattle')
print(df[not_seattle])
# 방법 2: not pattern in df['column'] 사용
# 'city' 열에 'Seattle' 문자열을 포함하지 않는 행 찾기
not_seattle = 'Seattle' not in df['city']
print(df[not_seattle])
name city
1 Bob New York
2 Charlie San Francisco
3 David Los Angeles
name city
1 Bob New York
2 Charlie San Francisco
3 David Los Angeles
설명:
데이터 불러오기 및 DataFrame 만들기:
import pandas as pd
를 사용하여 Pandas 라이브러리를 가져옵니다.data
딕셔너리를 만들어 이름과 도시 데이터를 저장합니다.df = pd.DataFrame(data)
를 사용하여 딕셔너리에서 DataFrame을 만듭니다.
print(df[not_seattle])
을 사용하여 결과 DataFrame을 출력합니다.
이 코드는 다음과 같은 상황에서 유용할 수 있습니다.
- 특정 단어나 문구를 포함하지 않는 데이터 행을 찾아야 하는 경우
- 데이터 분석 및 정리 작업을 수행하는 경우
- Pandas DataFrame의 기능을 배우고 싶은 경우
Pandas DataFrame에서 특정 문자열을 포함하지 않는 행 찾기: 대체 방법
df[~df['column'].isin(patterns)] 사용:
이 방법은 isin()
함수와 함께 ~
연산자를 사용하여 여러 문자열을 포함하지 않는 행을 찾습니다.
import pandas as pd
# 예시 데이터 생성
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'],
'city': ['Seattle', 'New York', 'San Francisco', 'Los Angeles', 'Seattle']}
df = pd.DataFrame(data)
# 'city' 열에 'Seattle' 또는 'Los Angeles' 문자열을 포함하지 않는 행 찾기
not_seattle_la = ~df['city'].isin(['Seattle', 'Los Angeles'])
print(df[not_seattle_la])
name city
1 Bob New York
2 Charlie San Francisco
3 David Los Angeles
query() 메서드 사용:
이 방법은 query()
메서드를 사용하여 SQL 표현식과 유사한 방식으로 DataFrame을 필터링합니다.
import pandas as pd
# 예시 데이터 생성
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'],
'city': ['Seattle', 'New York', 'San Francisco', 'Los Angeles', 'Seattle']}
df = pd.DataFrame(data)
# 'city' 열에 'Seattle' 또는 'Los Angeles' 문자열을 포함하지 않는 행 찾기
not_seattle_la = df.query("city != 'Seattle' & city != 'Los Angeles'")
print(not_seattle_la)
name city
1 Bob New York
2 Charlie San Francisco
3 David Los Angeles
loc 인덱서 사용:
이 방법은 loc
인덱서를 사용하여 조건에 따라 행을 선택합니다.
import pandas as pd
# 예시 데이터 생성
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'],
'city': ['Seattle', 'New York', 'San Francisco', 'Los Angeles', 'Seattle']}
df = pd.DataFrame(data)
# 'city' 열에 'Seattle' 또는 'Los Angeles' 문자열을 포함하지 않는 행 찾기
not_seattle_la = df.loc[(df['city'] != 'Seattle') & (df['city'] != 'Los Angeles')]
print(not_seattle_la)
name city
1 Bob New York
2 Charlie San Francisco
3 David Los Angeles
- 위에 제시된 방법 외에도 다른 방법들이 있을 수 있습니다.
- 특정 상황에 가장 적합한 방법은 사용자의 필요와 선호에 따라 다릅니다.
- 여러 방법을 시도해 보는 것이 좋습니다.
주의:
isin()
함수는 Python 3.6 이상에서만 사용 가능합니다. 이전 버전의 Python에서는list
를 직접 사용해야 합니다.query()
메서드는 Pandas 0.20 이상에서만 사용 가능합니다. 이전 버전에서는 다른 필터링 방법을 사용해야 합니다.
python pandas contains