我的第一個資料框如下所示:
df1:
ID Name Result
ABC1 John A
ABC1 Mac B
ABC1 Kat C
DEF1 John D
DEF1 Mac E
DEF1 Kat F
XYZ1 John G
XYZ1 Mac H
XYZ1 Kat I
df2:
ID John Mac Kat
ABC1 22 33 11
DEF1 10 12 2
XYZ2 11 12 36
結果 df3:(它應該將 df1 的 ID 和名稱與 df2 的列的 ID 和名稱(John、Mac 和 Kat)匹配,然后給出它們各自的值。
ID Name Result Value
ABC1 John A 22
ABC1 Mac B 33
ABC1 Kat C 11
DEF1 John D 10
DEF1 Mac E 12
DEF1 Kat F 2
XYZ1 John G 0
XYZ1 Mac H 0
XYZ1 Kat I 0
有多個問題:
使用列標題查找匹配值并在該行的匹配列中獲取值
將行值替換為將行值與列名匹配
但它只適用于一個資料框,所以我想合并資料框,但似乎不起作用。
uj5u.com熱心網友回復:
DataFrame.join與 一起使用DataFrame.stack:
df = (df1.join(df2.set_index('ID').stack().rename('Value'), on=['ID','Name'])
.fillna({'Value':0}))
或DataFrame.merge與DataFrame.melt:
df = (df1.merge(df2.melt('ID', var_name='Name', value_name='Value'),
on=['ID','Name'], how='left')
.fillna({'Value':0}))
print (df)
ID Name Result Value
0 ABC1 John A 22.0
1 ABC1 Mac B 33.0
2 ABC1 Kat C 11.0
3 DEF1 John D 10.0
4 DEF1 Mac E 12.0
5 DEF1 Kat F 2.0
6 XYZ1 John G 0.0
7 XYZ1 Mac H 0.0
8 XYZ1 Kat I 0.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/444016.html
