首页 > 解决方案 > 链接 2 个数据帧并使用查找返回一个值

问题描述

我是编码和数据方面的初学者,所以我能得到的任何帮助都会非常有帮助。

如果我有一个如下的数据框,那么每场比赛都是一个元组。

df1 = Team A Player 1.1        Team A Player 2.1              Team A Player 3.1
     ('Max', 'Hatteberg')   ('Hatteberg', 'Tejada')            ('Max', 'Rincon')
     ('Tejada', 'Brown')    ('Hatteberg', 'Rincon')         ('Hatteberg','Brown')

等等..

我有一个交叉表:

df2 =         Max  Hatteberg  Tejada     Brown     Rincon

  Max         NaN    -1.0      +2.0      -8.0       +5.0

  Hatteberg  +1.0     NaN      +2.5      +3.0         0

  Tejada     -2.0    -2.5       NaN      +5.5       -3.5

  Brown      +8.0    -3.0      -5.5       NaN       +2.8

  Rincon     -5.0      0       +3.5       2.8        NaN

我希望每场比赛都返回一个值

df1 = matchups 1    matchups 2    matchups 3
        +1.0           -2.5         -5.0
        -5.5             0          -3.0

我试过了,

df1.applymap(lambda x : df2.lookup([x[0]],[x[1]])[0])

但它回来了,

('One or more row labels was not found', 'occurred at index Team A Player 1.1')

我在引用两个数据框并返回值时遇到问题。有人可以帮我吗?提前致谢

标签: pythondatabasepandasdataframedata-science

解决方案


更像是您在 df1 元组中有一些价值,请参阅 df2 中的 None 值

你可以做reindex之前apply lookup

name=set(list(itertools.chain(*list(itertools.chain(*df1.values.tolist())))))
df2=df2.reindex(name).reindex(name,axis=1)
df1.applymap(lambda x : df2.lookup([x[0]],[x[1]])[0])

推荐阅读