如果我的数据框为:
df1 = matchups 1 matchups 2 matchups 3
('a', 'b') ('b', 'c') ('a', 'c')
('d', 'a') ('c', 'd') ('a', 'e')
以此类推。
我有一个交叉表:
df2 = a b c d e
a NaN -1.0 +2.0 -8.0 +5.0
b +1.0 NaN +2.5 +3.0 0
c -2.0 -2.5 NaN +5.5 -3.5
d +8.0 -3.0 -5.5 NaN +2.8
e -5.0 0 +3.5 -2.8 NaN
我希望每次比赛都按原样返回一个值
df1 = matchups 1 matchups 2 matchups 3
+1.0 -2.5 -2.0
-8.0 -5.5 -5.0
我在同时引用两个数据帧和返回值时遇到问题。有人可以帮我吗?预先感谢
答案 0 :(得分:3)
我认为您需要lookup
df1.applymap(lambda x : df2.lookup([x[0]],[x[1]])[0])
Out[289]:
M1 M2 M3
0 -1.0 2.5 2.0
1 8.0 5.5 5.0
答案 1 :(得分:2)
尝试一下:
print(df1.apply(lambda x: df2.loc[x[1],x[0]]))
输出:
matchups 1 matchups 2 matchups 3
0 +1.0 -2.5 -2.0
1 -8.0 -5.5 -5.0