>백엔드 개발 >파이썬 튜토리얼 >주 및 지역 패턴을 포함하는 특정 구조를 사용하여 텍스트 파일에서 Pandas DataFrame을 만들려면 어떻게 해야 합니까?

주 및 지역 패턴을 포함하는 특정 구조를 사용하여 텍스트 파일에서 Pandas DataFrame을 만들려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-03 03:05:02659검색

How can I create a Pandas DataFrame from a text file with a specific structure that includes state and region patterns?

주 및 지역 패턴이 포함된 텍스트 파일에서 Pandas DataFrame 읽기 및 구성

특정 구조의 텍스트 파일에서 Pandas DataFrame을 생성하려면 전략적 데이터 조작이 필요합니다. 문제를 자세히 조사하고 제공된 텍스트를 원하는 DataFrame으로 변환하는 솔루션을 살펴보겠습니다.

데이터 구조

텍스트 파일은 다음과 같은 계층 구조를 따릅니다.

  • "[edit]"가 있는 행은 주 이름입니다.
  • "[number]"가 있는 행은 지역 이름입니다.
  • 동일한 주에서는 지역 이름이 반복되어야 합니다.

해결책

1. 텍스트 파일 읽기

먼저 텍스트 파일을 읽고 read_csv()를 사용하여 DataFrame을 생성합니다. 특정 구분 기호가 없으므로 세미콜론 등 데이터에 없는 사용자 지정 구분 기호를 지정합니다.

<code class="python">df = pd.read_csv('filename.txt', sep=";", names=['Region Name'])</code>

2. 상태 이름 추출

str.extract() 메서드와 정규 표현식을 사용하여 상태 이름이 포함된 행을 식별하여 "[edit]"까지 상태 이름을 캡처합니다. 다음 값을 사용하여 'State'라는 새 열을 만듭니다.

<code class="python">df.insert(0, 'State', df['Region Name'].str.extract('(.*)\[edit\]', expand=False).ffill())</code>

3. 지역 이름에서 괄호 정보 제거

'지역 이름' 열에서 괄호와 그 안에 포함된 모든 문자를 제거합니다:

<code class="python">df['Region Name'] = df['Region Name'].str.replace(r' \(.+$', '')</code>

4. 주 헤더 행 제거

'지역 이름' 열에 "[편집]"이 나타나는 행을 삭제합니다. str.contains():

<code class="python">df = df[~df['Region Name'].str.contains('\[edit\]')].reset_index(drop=True)</code>

5를 사용하여 마스크를 만듭니다. 최종 DataFrame

이 시점에서 필요에 따라 '주' 및 '지역 이름' 열이 있는 DataFrame이 있습니다.

<code class="python">print(df)</code>

확장 솔루션

'지역 이름' 열에 대괄호로 묶인 텍스트를 포함하는 것을 선호합니다. 수정된 솔루션은 다음과 같습니다.

<code class="python">df.insert(0, 'State', df['Region Name'].str.extract('(.*)\[edit\]', expand=False).ffill())
df = df[~df['Region Name'].str.contains('\[edit\]')].reset_index(drop=True)

print(df)</code>

이렇게 하면 지역 이름에 다음이 포함되는 '주' 및 '지역 이름' 열이 있는 DataFrame이 생성됩니다. 괄호 안에 있는 텍스트입니다.

위 내용은 주 및 지역 패턴을 포함하는 특정 구조를 사용하여 텍스트 파일에서 Pandas DataFrame을 만들려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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