Pandas: 여러 하위 문자열에 대해 효율적으로 행 필터링
여러 하위 문자열을 기반으로 Pandas 데이터 프레임을 필터링하는 것은 어려울 수 있으며, 특히 하위 문자열에 특이한 문자가 포함된 경우 더욱 그렇습니다. . 이 글은 regex와 pandas의 문자열 일치 기능을 조합하여 사용하는 효율적인 솔루션을 제공합니다.
제공된 하위 문자열 목록(lst)에는 일반 문자와 특수 문자가 모두 포함된 요소가 있습니다. 문자 그대로 일치시키려면 re.escape를 사용하여 이러한 특수 문자를 이스케이프하고 정규식 파이프(|)를 사용하여 결합할 수 있습니다.
esc_lst = [re.escape(s) for s in lst] pattern = '|'.join(esc_lst)
이제 대상 열(col)의 각 행을 효율적으로 확인할 수 있습니다. str.contains를 사용하는 패턴에 대해:
col.str.contains(pattern, case=False)
이 접근 방식은 중첩 루프와 여러 str.contains를 사용하는 원래 솔루션보다 훨씬 뛰어난 성능을 발휘합니다.
성능 비교
20자 문자열 50,000개와 5자 하위 문자열 100개로 구성된 데이터 세트를 사용하면 제안하는 방법에 약 1초가 걸립니다.
%timeit col.str.contains(pattern, case=False) 1 loop, best of 3: 981 ms per loop
비교하면 원래 접근 방식은 동일하게 약 5초 정도 걸렸습니다.
참고: 타이밍은 일치 항목이 없는 최악의 시나리오를 나타냅니다. 제안된 방법은 일치 항목이 발견되면 하위 문자열 검사를 중단하므로 일치 항목이 있을 때 더 나은 성능을 발휘합니다.
위 내용은 특수 문자를 포함하여 여러 하위 문자열을 기반으로 Pandas 행을 효율적으로 필터링하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!