>  기사  >  백엔드 개발  >  여러 하위 문자열에 대해 Pandas 시리즈를 효율적으로 필터링하려면 어떻게 해야 합니까?

여러 하위 문자열에 대해 Pandas 시리즈를 효율적으로 필터링하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-23 18:17:20278검색

How Can I Efficiently Filter a Pandas Series for Multiple Substrings?

시리즈의 여러 하위 문자열에 대한 효율적인 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.