链接 2 个数据帧并使用查找返回一个值

Posted

技术标签:

【中文标题】链接 2 个数据帧并使用查找返回一个值【英文标题】:Linking 2 data frames and returning a value using lookup 【发布时间】:2018-12-10 05:20:27 【问题描述】:

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

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

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')

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

【问题讨论】:

【参考方案1】:

更像是你在 df1 元组中有一些值是指来自 df2 的 None 值

你可以在applylookup之前使用reindex

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])

【讨论】:

我需要为任何东西定义name吗?抱歉,正在努力学习,但我不擅长它

以上是关于链接 2 个数据帧并使用查找返回一个值的主要内容,如果未能解决你的问题,请参考以下文章

使用 firebase 动态链接下载应用并删除并重新下载会在链接中返回一个值

查找gridview链接按钮值jquery

Mongoose/Mongodb 数据库调用以不一致的顺序返回数据

在 Django 循环模板中对第二个模型使用键值查找?

将用户定义的函数应用于 PySpark 数据帧并返回字典

在动态数组中查找并使用下一个和上一个值