여러 하위 문자열에 대해 Pandas 데이터 프레임을 효율적으로 필터링
하위 문자열에 대해 데이터 프레임을 필터링하는 것은 일반적인 작업이지만 대규모 데이터 세트의 경우 계산 비용이 많이 들 수 있습니다. 특이한 문자와 대소문자를 구분하지 않는 일치 항목을 처리할 때 문제는 더욱 복잡해집니다.
문제:
문자열 열이 있는 Pandas 데이터 프레임이 주어지면 다음과 같이 행을 효율적으로 필터링합니다. 열에 대소문자 및 특수 문자에 관계없이 하위 문자열 목록 중 하나 이상이 포함되어 있습니다. 존재합니다.
비효율적인 접근 방식:
초기 접근 방식에서는 목록의 각 하위 문자열을 반복하고 regex=False 및 대소문자를 사용하여 str.contains() 메서드를 적용했습니다. =거짓 플래그. 이 접근 방식은 간단하지만 대규모 데이터세트의 경우 속도가 느릴 수 있습니다.
효율적인 접근 방식:
보다 효율적인 솔루션은 정규 표현식을 활용하여 이스케이프된 모든 항목을 포함하는 패턴을 구성하는 것입니다. 정규식 파이프로 결합된 하위 문자열 |. 그런 다음 str.contains() 메서드를 사용하여 열의 각 문자열에 대해 이 패턴을 확인합니다.
import re lst = ['kdSj;af-!?', 'aBC+dsfa?\-', 'sdKaJg|dksaf-*'] esc_lst = [re.escape(s) for s in lst] pattern = '|'.join(esc_lst) df[col].str.contains(pattern, case=False)
이 접근 방식은 특히 이스케이프가 필요한 대규모 데이터 세트 및 하위 문자열의 경우 반복 접근 방식보다 훨씬 빠르게 수행됩니다.
성능 평가:
데이터세트 사용 50,000개의 문자열과 100개의 하위 문자열을 포함하여 제안하는 방법은 완료하는 데 약 1초가 소요되는 반면, 반복 방법은 약 5초가 소요됩니다. 하위 문자열 중 하나라도 열 값과 일치하면 타이밍이 더욱 향상됩니다.
위 내용은 여러 하위 문자열, 대소문자 및 특수 문자 처리에 대해 Pandas DataFrame을 효율적으로 필터링하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!