Pandas DataFrame에서 'in' 및 'not in'을 사용하여 SQL과 같은 필터링 방법
'in' 연산자 사용:
'in' 연산자는 특정 값이 특정 열에 포함되어 있는지 확인하는 데 사용됩니다. 예를 들어, 'city' 열에 '서울' 또는 '부산'이 포함된 행만 선택하려면 다음과 같은 코드를 사용할 수 있습니다.
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'city': ['서울', '부산', '대구', '인천', '광주'], 'age': [25, 30, 27, 33, 28]})
# 'city' 열에 '서울' 또는 '부산'이 포함된 행만 선택
filtered_df = df[df['city'].isin(['서울', '부산'])]
print(filtered_df)
결과:
city age
0 서울 25
1 부산 30
# 'city' 열에 '서울' 또는 '부산'이 포함되지 않은 행만 선택
filtered_df = df[~df['city'].isin(['서울', '부산'])]
print(filtered_df)
city age
2 대구 27
3 인천 33
4 광주 28
여러 조건 필터링:
'in' 및 'not in' 연산자를 함께 사용하여 여러 조건에 따라 데이터프레임을 필터링할 수 있습니다. 예를 들어, 'city' 열에 '서울' 또는 '부산'이 포함되고 'age'가 30 이상인 행만 선택하려면 다음과 같은 코드를 사용할 수 있습니다.
filtered_df = df[(df['city'].isin(['서울', '부산'])) & (df['age'] >= 30)]
print(filtered_df)
city age
1 부산 30
결론:
'in' 및 'not in' 연산자는 Pandas DataFrame에서 SQL과 유사한 방식으로 필터링하는 데 유용한 도구입니다. 다양한 필터링 조건을 만족하는 행을 선택하는 데 사용할 수 있으며, 여러 조건을 함께 사용하여 더욱 복잡한 필터링을 수행할 수 있습니다.
참고:
- 'isin' 함수는 'in' 연산자와 유사한 기능을 제공하며, 여러 값을 한 번에 검사하는 데 유용합니다.
예제 코드: Pandas DataFrame에서 'in' 및 'not in'을 사용하여 필터링하기
특정 값 포함 여부 확인하기
이 코드는 'city' 열에 '서울' 또는 '부산'이 포함된 행만 선택합니다.
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'city': ['서울', '부산', '대구', '인천', '광주'], 'age': [25, 30, 27, 33, 28]})
# 'city' 열에 '서울' 또는 '부산'이 포함된 행만 선택
filtered_df = df[df['city'].isin(['서울', '부산'])]
print(filtered_df)
city age
0 서울 25
1 부산 30
특정 값 제외하기
# 'city' 열에 '서울' 또는 '부산'이 포함되지 않은 행만 선택
filtered_df = df[~df['city'].isin(['서울', '부산'])]
print(filtered_df)
city age
2 대구 27
3 인천 33
4 광주 28
여러 조건 필터링하기
# 'city' 열에 '서울' 또는 '부산'이 포함되고 'age'가 30 이상인 행만 선택
filtered_df = df[(df['city'].isin(['서울', '부산'])) & (df['age'] >= 30)]
print(filtered_df)
city age
1 부산 30
'not in' 연산자와 함께 사용하기
# 'city' 열에 '서울' 또는 '부산'이 포함되지 않고 'age'가 30 이상인 행만 선택
filtered_df = df[~df['city'].isin(['서울', '부산']) & (df['age'] >= 30)]
print(filtered_df)
city age
3 인천 33
'isin' 함수 사용하기
'isin' 함수는 'in' 연산자와 유사한 기능을 제공하며, 여러 값을 한 번에 검사하는 데 유용합니다. 예를 들어, 'city' 열에 '서울', '부산' 또는 '대구'가 포함된 행만 선택하려면 다음과 같은 코드를 사용할 수 있습니다.
# 'city' 열에 '서울', '부산' 또는 '대구'가 포함된 행만 선택
filtered_df = df[df['city'].isin(['서울', '부산', '대구'])]
print(filtered_df)
city age
0 서울 25
1 부산 30
2 대구 27
Pandas DataFrame에서 'in' 및 'not in' 대신 사용할 수 있는 대체 방법
Query 문자열 사용:
SQL과 유사한 query 문자열을 사용하여 DataFrame을 필터링할 수 있습니다. 이 방법은 복잡한 필터링 조건을 처리할 때 유용할 수 있습니다.
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'city': ['서울', '부산', '대구', '인천', '광주'], 'age': [25, 30, 27, 33, 28]})
# 'city' 열에 '서울' 또는 '부산'이 포함된 행만 선택
filtered_df = df.query("city in ['서울', '부산']")
print(filtered_df)
city age
0 서울 25
1 부산 30
벡터화된 연산 사용:
특정 조건을 충족하는 행을 선택하는 데 벡터화된 연산을 사용할 수 있습니다. 이 방법은 'in' 및 'not in' 연산자보다 빠를 수 있습니다.
# 'city' 열에 '서울' 또는 '부산'이 포함된 행만 선택
filtered_df = df[df['city'].isin(['서울', '부산'])]
# 'city' 열에 '서울' 또는 '부산'이 포함되지 않은 행만 선택
filtered_df = df[~df['city'].isin(['서울', '부산'])]
# 'city' 열에 '서울' 또는 '부산'이 포함되고 'age'가 30 이상인 행만 선택
filtered_df = df[(df['city'].isin(['서울', '부산'])) & (df['age'] >= 30)]
'loc' 인덱서 사용:
'loc' 인덱서를 사용하여 특정 조건을 충족하는 행을 선택할 수 있습니다. 이 방법은 특정 행 또는 열에 대한 인덱싱에 유용합니다.
# 'city' 열에 '서울' 또는 '부산'이 포함된 행만 선택
filtered_df = df.loc[df['city'].isin(['서울', '부산'])]
# 'city' 열에 '서울' 또는 '부산'이 포함되지 않은 행만 선택
filtered_df = df.loc[~df['city'].isin(['서울', '부산'])]
# 'city' 열에 '서울' 또는 '부산'이 포함되고 'age'가 30 이상인 행만 선택
filtered_df = df.loc[(df['city'].isin(['서울', '부산'])) & (df['age'] >= 30)]
# 'city' 열에 '서울' 또는 '부산'이 포함된 행의 인덱스를 찾기
index = df[df['city'].isin(['서울', '부산'])].index
# 'city' 열에 '서울' 또는 '부산'이 포함된 행만 선택
filtered_df = df.iloc[index]
# 'city' 열에 '서울' 또는 '부산'이 포함되지 않은 행의 인덱스를 찾기
index = ~df['city'].isin(['서울', '부산'])
# 'city' 열에 '서울' 또는 '부산'이 포함되지 않은 행만 선택
filtered_df = df.iloc[index]
# 'city' 열에 '서울' 또는 '부산'이 포함되고 'age'가 30 이상인 행의 인덱스를 찾기
index = (df['city'].isin(['서울', '부산'])) & (df['age'] >= 30)
# 'city' 열에 '서울' 또는 '부산'이 포함되고 'age'가 30 이상인 행만 선택
filtered_df = df.iloc[index]
python pandas dataframe