我在 CoLab 中使用 Python,我正在嘗試找到可以讓我將任何單元格從資料框的子集移動到同一資料框中的新/不同列或將資料框的單元格排序到正確列中的東西.
CSV 中的原始列如下所示:
并使用
Users[['Motorbike', 'Car', 'Bus', 'Train', 'Tram', 'Taxi']] = Users['What distance did you travel in the last month by:'].str.split(',', expand=True)
我能夠將專欄分成 6 個新系列來給出這個
但是,現在我想要摩托車列中所有帶有“摩托車”的單元格,汽車列中所有帶有“汽車”的單元格等等,而不覆寫任何其他單元格,或者如果無法完成,則只分配任何事件摩托車、汽車等進入我添加到資料框中的新列“Motorbike1”、“Car1”等,如下所示。有人可以幫忙嗎? 新專欄
我試圖將原始列中的單元格復制到新列,然后洗掉包含 say not 'Car' 的值但是重復下一個原始列到它覆寫的第一個新列中。任何行中任何一種運輸方式都沒有重復。即每行中每種運輸方式只出現一次或更少。
uj5u.com熱心網友回復:
您可以使用正則運算式提取xxx (yyy)(yyy)零件,然后重塑:
out = (df['col_name']
.str.extractall(r'([^,] ) (\([^,]*\))')
.set_index(0, append=True)[1]
.droplevel('match')
.unstack(0)
)
輸出:
Bus Car Motorbike Taxi Train Tram
0 NaN NaN NaN (km)(20) NaN NaN
1 NaN (km)(500) (km)(500) NaN NaN NaN
2 NaN (km)(1000) NaN NaN NaN NaN
3 NaN (km)(100) NaN NaN (km)(20) NaN
4 (km)(150) NaN NaN (km)(25) (km)(700) NaN
5 (km)(40) (km)(0) (km)(0) NaN NaN NaN
6 NaN (km)(300) NaN (km)(100) NaN NaN
7 NaN (km)(300) NaN NaN NaN NaN
8 NaN NaN NaN NaN (km)(80) (km)(300)
9 (km)(50) (km)(700) NaN NaN NaN (km)(50)
如果你只需要數字,你可以改變正則運算式:
(df['col_name'].str.extractall(r'([^,] )\s \(km\)\((\d )\)')
.set_index(0, append=True)[1]
.droplevel('match')
.unstack(0).rename_axis(columns=None)
)
輸出:
Bus Car Motorbike Taxi Train Tram
0 NaN NaN NaN 20 NaN NaN
1 NaN 500 500 NaN NaN NaN
2 NaN 1000 NaN NaN NaN NaN
3 NaN 100 NaN NaN 20 NaN
4 150 NaN NaN 25 700 NaN
5 40 0 0 NaN NaN NaN
6 NaN 300 NaN 100 NaN NaN
7 NaN 300 NaN NaN NaN NaN
8 NaN NaN NaN NaN 80 300
9 50 700 NaN NaN NaN 50
uj5u.com熱心網友回復:
對字典使用串列理解和拆分,然后傳遞給 DataFrame 建構式:
L = [dict([y.split() for y in x.split(',')])
for x in df['What distance did you travel in the last month by:']]
df = pd.DataFrame(L)
print (df)
Taxi Motorbike Car Train Bus Tram
0 (km)(20) NaN NaN NaN NaN NaN
1 NaN (km)(500) (km)(500) NaN NaN NaN
2 NaN NaN (km)(1000) NaN NaN NaN
3 NaN NaN (km)(100) (km)(20) NaN NaN
4 (km)(25) NaN NaN (km)(700) (km)(150) NaN
5 NaN (km)(0) (km)(0) NaN (km)(40) NaN
6 (km)(100) NaN (km)(300) NaN NaN NaN
7 NaN NaN (km)(300) NaN NaN NaN
8 NaN NaN NaN (km)(80) NaN (km)(300)
9 NaN NaN (km)(700) NaN (km)(50) (km)(50)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/535644.html
上一篇:如何從二進制資料幀中找到公共邊?
