我有一個看起來像這樣的熊貓資料框
d1 = pd.DataFrame({"Title":['t1','t2','t3'],
"Description":['[rank:102] [status: Confirmed] [City: xyz] [Country:C1]',
'[rank:93] [status: Rejected] [City: abc] [Country:C2]',
'[rank: ] [status: Confirmed] [City: ] [Country: ]']})
如您所見,分析所需的重要資料位于我想要分離的模式的第二列中。將“排名”、“狀態”、“城市”和“國家”分成不同列的最佳方法是什么。此外,有時資料會在幾行的描述列中不存在(例如記錄 3)
作為我的最終輸出,我希望我的資料集包含五列
- 標題
- 秩
- 狀態
- 城市
- 國家
uj5u.com熱心網友回復:
您可以使用正則運算式str.extractall將鍵/值對提取為兩列,然后pivot將第一列設定為列名,最后join設定為原始列:
(d1
.drop('Description', axis=1)
.join(
d1['Description']
.str.extractall('([^][] ):([^][] )')
.droplevel(1) # get rid of extra "match" level to aggregate the rows into 1
.pivot(columns=0, values=1)
)
)
輸出:
Title City Country rank status
0 t1 xyz C1 102 Confirmed
1 t2 abc C2 93 Rejected
2 t3 Confirmed
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/434029.html
下一篇:在列之間查找字串匹配
