我知道有很多關于合并兩個 Pandas df 的資源,但我試圖根據第二個 df 的 ID 合并一個 df,但我需要從第二個 df 的行中創建新列。這有點令人困惑,但我在這里有一個示例,可以闡明我正在嘗試做的事情。
我有的:
dfa = pd.DataFrame({"ID": ["1", "2", "3"],"Color":["Red", "White", "Blue"],"Length":["16", "14.97", "22.75"]})
dfb = pd.DataFrame({"ID": ["1", "1", "2","3"],"Col1":["Color", "Width", "Length","Color"],"Value":["Blue", "14.97", "22.75","Green"]})
我想要的是:
dfc = pd.DataFrame({"ID": ["1", "2", "3"],"Color":["Blue", "White", "Green"],"Length":["16", "14.97", "22.75"],"c:Color":["Blue","NaN","Green"],"c:Width":["14.97","NaN","NaN"],"c:Length":["NaN","22.75","NaN"]})
任何幫助,將不勝感激!
uj5u.com熱心網友回復:
pivot之前使用merge:
>>> dfa.merge(dfb.pivot('ID', 'Col1', 'Value').add_prefix('c:'), on='ID')
ID Color Length c:Color c:Length c:Width
0 1 Red 16 Blue NaN 14.97
1 2 White 14.97 NaN 22.75 NaN
2 3 Blue 22.75 Green NaN NaN
要“準確地”獲得您的輸出:
>>> dfa.merge(dfb.pivot('ID', 'Col1', 'Value')[dfb['Col1'].unique()].add_prefix('c:'), on='ID')
ID Color Length c:Color c:Width c:Length
0 1 Red 16 Blue 14.97 NaN
1 2 White 14.97 NaN NaN 22.75
2 3 Blue 22.75 Green NaN NaN
uj5u.com熱心網友回復:
加入前需要轉換為wide:
dfa.merge(
dfb.pivot(
index='ID',
columns='Col1',
values='Value'
).add_prefix('c:'),
on = 'ID'
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/383774.html
