将字符串元组链接到交叉表数据框

时间:2018-06-25 02:27:17

标签: python pandas dataframe data-science

如果我的数据框为:

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

我在同时引用两个数据帧和返回值时遇到问题。有人可以帮我吗?预先感谢

2 个答案:

答案 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