首頁 >後端開發 >Python教學 >如何將 Pandas DataFrame 字串列拆分為兩列?

如何將 Pandas DataFrame 字串列拆分為兩列?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-24 04:41:18557瀏覽

How to Split a Pandas DataFrame String Column into Two Columns?

如何將資料框字串列拆分為兩個欄位?

在處理表格資料時,通常需要操作要擷取的資料具體資訊。一個常見的任務是將一列字串值拆分為多列,每列包含原始字串的一部分。

問題與要求

假設我們有一個DataFrame稱為df 的一列稱為row,其中包含以下格式的字串值:

          row
0    00000 UNITED STATES
1    01000 ALABAMA
2    01001 Autauga County, AL
3    01003 Baldwin County, AL
4    01005 Barbour County, AL

我們的目標是拆分將row 列分成兩個新列:fips 和row,其中fips 包含每個字串的前五個字符,row包含其餘字元。

使用 str.split() 的解

分割行列的一種方法是使用 str.split() 方法。此方法採用正規表示式作為參數,並根據正規表示式指定的模式分割字串。在我們的例子中,我們可以使用以下正規表示式:

r'(\d{5}) +'

此正規表示式將匹配由五個數字組成的序列,後面跟著一個或多個空格。然後,我們可以使用str.split() 方法使用此正規表示式分割行列,並將結果清單指派給fips 和行列,如下所示:

import pandas as pd

# Split the 'row' column into 'fips' and 'row' columns
df[['fips', 'row']] = df['row'].str.split(r'(\d{5}) +', n=1, expand=True)

expand=True 參數為用於指定str.split() 方法應傳回具有多列的DataFrame,而不是一系列

結果

執行上述程式碼後,我們的 DataFrame df將如下所示:

         fips       row
0    00000 UNITED STATES
1    01000 ALABAMA
2    01001 Autauga County, AL
3    01003 Baldwin County, AL
4    01005 Barbour County, AL

使用的替代解決方案str.extract()

另一種分割行列的方法是使用str.extract()方法。此方法採用正規表示式作為參數,並傳回一個包含正規表示式符合項的 DataFrame。在我們的例子中,我們可以使用以下正規表示式:

r'(\d{5}) +\D+'

此正規表示式將匹配由五個數字組成的序列,後面跟著一個或多個非數字。然後,我們可以使用str.extract() 方法來擷取此正規表示式的符合項,並將產生的DataFrame 指派給fips 和row 資料列,如下所示:

import pandas as pd

# Split the 'row' column into 'fips' and 'row' columns
df[['fips', 'row']] = df['row'].str.extract(r'(\d{5}) +\D+')

Result

執行上面的程式碼後,我們的DataFrame df將如下所示:

         fips       row
0    00000 UNITED STATES
1    01000 ALABAMA
2    01001 Autauga County, AL
3    01003 Baldwin County, AL
4    01005 Barbour County, AL

兩者上述解決方案將達到所需的結果,將行列拆分為 fips 和行列。 str.split() 解決方案更靈活,可以用於基於任何正規表示式來分割列,而 str.extract() 解決方案更簡單,更容易理解。

以上是如何將 Pandas DataFrame 字串列拆分為兩列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn