Pandas 열에 특정 값이 포함되어 있는지 확인하는 방법
str.contains() 사용하기
str.contains()
메서드는 문자열 열에서 특정 문자열 또는 패턴이 포함되어 있는지 확인하는 데 사용됩니다. 예를 들어, "name" 열에 "kim"이라는 문자열이 포함된 행을 모두 선택하려면 다음 코드를 사용할 수 있습니다.
import pandas as pd
# 데이터프레임 만들기
df = pd.DataFrame({'name': ['kim', 'park', 'lee', 'kim'], 'age': [30, 25, 27, 22]})
# 'name' 열에 'kim'이 포함된 행 선택
df_filtered = df[df['name'].str.contains('kim')]
# 결과 출력
print(df_filtered)
isin() 사용하기
isin()
메서드는 특정 열의 값이 주어진 값 목록에 포함되어 있는지 확인하는 데 사용됩니다. 예를 들어, "age" 열의 값이 20, 30 또는 40인 행을 모두 선택하려면 다음 코드를 사용할 수 있습니다.
import pandas as pd
# 데이터프레임 만들기
df = pd.DataFrame({'name': ['kim', 'park', 'lee', 'kim'], 'age': [30, 25, 27, 22]})
# 'age' 열의 값이 20, 30 또는 40인 행 선택
df_filtered = df[df['age'].isin([20, 30, 40])]
# 결과 출력
print(df_filtered)
직접 for 루프 사용하기
위의 방법보다 직접 for 루프를 사용하는 방법도 있습니다. 하지만 이 방법은 일반적으로 더 느리고 코드가 더 복잡합니다.
import pandas as pd
# 데이터프레임 만들기
df = pd.DataFrame({'name': ['kim', 'park', 'lee', 'kim'], 'age': [30, 25, 27, 22]})
# 'name' 열에 'kim'이 포함된 행 선택
df_filtered = []
for i in range(len(df)):
if 'kim' in df['name'].iloc[i]:
df_filtered.append(df.iloc[i])
# 결과 출력
print(df_filtered)
추가적인 방법
위의 방법 외에도 any()
, all()
, numpy.where()
등을 사용하여 특정 열에 특정 값이 포함되어 있는지 확인할 수 있습니다.
예제 코드
import pandas as pd
# 데이터 만들기
data = {'name': ['kim', 'park', 'lee', 'kim', 'park'],
'age': [30, 25, 27, 22, 25],
'city': ['seoul', 'daegu', 'busan', 'seoul', 'daegu']}
df = pd.DataFrame(data)
# 1. str.contains() 사용하기
# 'name' 열에 'kim'이 포함된 행 선택
df_filtered = df[df['name'].str.contains('kim')]
print(df_filtered)
# 2. isin() 사용하기
# 'age' 열의 값이 20, 30 또는 40인 행 선택
df_filtered = df[df['age'].isin([20, 30, 40])]
print(df_filtered)
# 3. 직접 for 루프 사용하기
# 'city' 열에 'seoul'이 포함된 행 선택
df_filtered = []
for i in range(len(df)):
if 'seoul' in df['city'].iloc[i]:
df_filtered.append(df.iloc[i])
print(df_filtered)
설명
위 코드에서는 다음과 같은 작업을 수행합니다.
pandas
라이브러리를 불러옵니다.- 딕셔너리 데이터를 사용하여
DataFrame
을 만듭니다. str.contains()
를 사용하여 'name' 열에 'kim'이 포함된 행을 선택합니다.isin()
을 사용하여 'age' 열의 값이 20, 30 또는 40인 행을 선택합니다.- 직접 for 루프를 사용하여 'city' 열에 'seoul'이 포함된 행을 선택합니다.
Pandas 열에 특정 값이 포함되어 있는지 확인하는 대체 방법
numpy.vectorize() 사용하기
numpy.vectorize()
함수를 사용하여 Pandas 열에 특정 값이 포함되어 있는지 확인하는 사용자 정의 함수를 만들 수 있습니다. 예를 들어, 다음 코드는 'name' 열에 'kim'이 포함된 행을 모두 선택하는 사용자 정의 함수를 만듭니다.
import pandas as pd
import numpy as np
def is_kim(name):
return 'kim' in name
# 데이터 만들기
data = {'name': ['kim', 'park', 'lee', 'kim', 'park'],
'age': [30, 25, 27, 22, 25],
'city': ['seoul', 'daegu', 'busan', 'seoul', 'daegu']}
df = pd.DataFrame(data)
# 'name' 열에 'kim'이 포함된 행 선택
is_kim_vec = np.vectorize(is_kim)
df_filtered = df[is_kim_vec(df['name'])]
print(df_filtered)
query() 사용하기
import pandas as pd
# 데이터 만들기
data = {'name': ['kim', 'park', 'lee', 'kim', 'park'],
'age': [30, 25, 27, 22, 25],
'city': ['seoul', 'daegu', 'busan', 'seoul', 'daegu']}
df = pd.DataFrame(data)
# 'name' 열에 'kim'이 포함된 행 선택
df_filtered = df.query("name == 'kim'")
print(df_filtered)
apply() 사용하기
import pandas as pd
# 데이터 만들기
data = {'name': ['kim', 'park', 'lee', 'kim', 'park'],
'age': [30, 25, 27, 22, 25],
'city': ['seoul', 'daegu', 'busan', 'seoul', 'daegu']}
df = pd.DataFrame(data)
# 'name' 열에 'kim'이 포함된 행 선택
def is_kim(name):
return 'kim' in name
df_filtered = df[df['name'].apply(is_kim)]
print(df_filtered)
python pandas