Pandas 시리즈의 다중 하위 문자열 필터링 성능 개선
특정 문자열 열에 하나 이상의 하위 문자열이 포함된 행을 필터링하려고 할 때 주어진 목록에 따르면 np.logical_or.reduce()를 사용하는 기존 방법은 대규모 데이터 세트에 비효율적일 수 있습니다. 이 기사에서는 성능 향상을 위해 정규식을 활용하는 대체 접근 방식을 살펴봅니다.
제안된 솔루션
str.contains()에서 regex=False를 사용하는 대신 정규식을 사용합니다. re.escape()를 사용하여 제공된 하위 문자열을 올바르게 이스케이프한 후. 이렇게 하면 정규식 해석이 아닌 문자 그대로의 일치가 보장됩니다. 그런 다음 이스케이프된 하위 문자열은 정규식 파이프(|)를 사용하여 단일 패턴으로 결합됩니다.
마스킹 프로세스
마스킹 단계는 시리즈 전체의 루프가 되어 다음 사항을 확인합니다. 각 문자열은 다음 패턴과 일치합니다:
df[col].str.contains(pattern, case=False)
성능 비교
길이가 5인 100개의 하위 문자열과 길이가 20인 50,000개의 문자열이 있는 샘플 데이터셋을 사용하여 제안한 방법은 약 1초가 걸렸습니다. 원래 방법은 동일한 데이터에 대해 약 5초가 걸렸습니다.
참고
이 솔루션은 하위 문자열 일치가 없는 "최악의 경우" 시나리오를 가정합니다. 일치하는 경우 성능이 더욱 향상됩니다. 또한 이 접근 방식은 초기 방법보다 효율적이므로 행당 필요한 확인 횟수가 줄어듭니다.
위 내용은 정규 표현식은 Pandas 시리즈 하위 문자열 필터링 성능을 어떻게 향상시킬 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!