链接 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 值
你可以在apply
lookup
之前使用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 动态链接下载应用并删除并重新下载会在链接中返回一个值