시리즈의 여러 하위 문자열에 대한 효율적인 Pandas 필터링
시리즈에 여러 하위 문자열이 포함되어 있는지 확인하는 것은 데이터 분석에서 일반적인 작업입니다. 논리를 사용하거나 개별 str.contains 작업을 결합하는 것은 간단한 솔루션을 제공하지만 긴 하위 문자열 목록과 큰 데이터 프레임에는 비효율적일 수 있습니다.
이 작업을 최적화하려면 정규식(regex) 접근 방식을 채택하는 것이 좋습니다. 하위 문자열을 정규식 패턴으로 래핑하면 Pandas의 효율적인 문자열 일치 기능을 활용할 수 있습니다. 특히 하위 문자열에서 특수 문자를 이스케이프 처리한 후 파이프 문자(|)를 사용하여 하위 문자열을 결합하여 정규식 패턴을 구성할 수 있습니다.
import re esc_lst = [re.escape(s) for s in lst] pattern = '|'.join(esc_lst)
이 패턴을 사용하면 str을 사용하여 계열을 필터링할 수 있습니다. 대소문자를 구분하지 않고 포함된 일치:
df[col].str.contains(pattern, case=False)
이 접근 방식은 특히 대규모 데이터 프레임의 경우 향상된 성능을 제공합니다. 다음 예를 고려하십시오.
from random import randint, seed seed(321) # 100 substrings of 5 characters lst = [''.join([chr(randint(0, 256)) for _ in range(5)]) for _ in range(100)] # 50000 strings of 20 characters strings = [''.join([chr(randint(0, 256)) for _ in range(20)]) for _ in range(50000)] col = pd.Series(strings) esc_lst = [re.escape(s) for s in lst] pattern = '|'.join(esc_lst)
이 최적화된 접근 방식을 사용하면 필터링 작업에 50,000개의 행과 100개의 하위 문자열에 대해 약 1초가 소요됩니다. 이는 원래 질문에 설명된 방법보다 훨씬 빠릅니다. 더 큰 데이터 프레임과 하위 문자열 목록의 경우 성능 차이가 더욱 두드러집니다.
위 내용은 여러 하위 문자열에 대해 Pandas 시리즈를 효율적으로 필터링하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!