如何將資料框字串列拆分為兩個欄位?
在處理表格資料時,通常需要操作要擷取的資料具體資訊。一個常見的任務是將一列字串值拆分為多列,每列包含原始字串的一部分。
問題與要求
假設我們有一個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中文網其他相關文章!