首頁 >後端開發 >Python教學 >如何從具有包含州和地區模式的特定結構的文本文件創建 Pandas DataFrame?

如何從具有包含州和地區模式的特定結構的文本文件創建 Pandas DataFrame?

Barbara Streisand
Barbara Streisand原創
2024-11-03 03:05:02661瀏覽

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.刪除州標題行

刪除「區域名稱」欄位中出現「[edit]」的行。使用 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