# isin
- isin은 특정 값들의 목록(리스트, 시리즈 등)이 데이터프레임이나 시리즈의 값에 포함되어 있는지를 확인하는 데 사용된다.
- 여러 값 중 하나라도 일치하면 True를 반환한다.
- 주로 ==(동등 비교)를 여러 값에 대해 한꺼번에 수행할 때 사용한다.
- 대소문자를 구분한다.
import pandas as pd
# 데이터 생성
df = pd.DataFrame({'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]})
# 특정 이름이 포함된 행 필터링
filter_names = ['Alice', 'Charlie']
filtered_df = df[df['Name'].isin(filter_names)]
print(filtered_df)
# 결과:
# Name Age
# 0 Alice 25
# 2 Charlie 35
# contains
- contains는 특정 문자열 패턴이 시리즈의 각 값에 포함되어 있는지를 확인하는 데 사용된다.
- 값 전체가 아니라 부분 일치(부분 문자열 또는 정규식 패턴)를 확인한다.
- 정규 표현식을 지원한다(기본값 regex=True).
- 대소문자를 구분한다(기본값 case=True).
- Series에서만 사용할 수 있다(str.contains()로 호출).
# 특정 문자열이 포함된 행 필터링
filtered_df = df[df['Name'].str.contains('li')]
print(filtered_df)
# 결과:
# Name Age
# 0 Alice 25
# 2 Charlie 35
# isin vs contains
특징 | isin | contains |
주요 목적 | 특정 값(완전 일치)이 존재하는지 확인 | 특정 패턴(부분 일치)이 존재하는지 확인 |
적용 대상 | DataFrame/Series | Series (문자열 전용) |
지원 | 리스트, 튜플, 시리즈 | 문자열, 정규 표현식 |
대소문자 구분 | 항상 구분 | 기본적으로 구분 (옵션: case=False) |
정규 표현식 지원 | 지원하지 않음 | 지원 (옵션: regex=True) |
# 주의사항
## isin은 리스트/시리즈를 입력으로 받아야 한다
- 단일 문자열 비교 시 isin이 적합하지 않다:
# 잘못된 예제
df[df['Name'].isin('Alice')] # TypeError 발생
# 올바른 예제
df[df['Name'].isin(['Alice'])]
## contains는 문자열 전용이다
- 숫자 데이터에 바로 사용할 수 없다.
# 잘못된 예제
df[df['Age'].str.contains('2')] # AttributeError 발생
# 올바른 예제
df[df['Age'].astype(str).str.contains('2')]
## 정규 표현식을 사용하는 경우
- contains에서 regex=True는 정규식 패턴을 사용하므로 예기치 않은 결과를 방지하려면 regex=False를 지정해야 할 때도 있다.
df[df['Name'].str.contains('Al|Bob', regex=True)] # 정규식 사용
df[df['Name'].str.contains('Al|Bob', regex=False)] # 문자열 그대로 찾기
728x90
'Python' 카테고리의 다른 글
[Pandas] 날짜/시간의 차이 (timedelta) (0) | 2024.11.18 |
---|---|
[Pandas] 날짜/시간 데이터 처리하기(to_datetime(), .dt, to_period) (0) | 2024.11.18 |
[Pandas] 데이터프레임의 행/열/데이터 개수 세기 (0) | 2024.11.18 |
[Python] enumerate() (4) | 2024.11.14 |
[Pandas] apply lambda 식으로 데이터 가공하기 (0) | 2024.02.19 |