首页 > 解决方案 > 将数据框的两列与新的数据框列进行比较

问题描述

我有两个看起来像的数据框

   team  points
0     1     2.5
1     2     3.2
2     5     5.8
3     3     2.8
4     4     1.9

和:

   team1  team2
0      1      5
1      2      4
2      3      1

预期的输出应该给我一个新的列,其中包含获胜者(更多积分):

team1   team2   winner
 1         5       5
 2         4       2
 3         1       3

标签: pythonpandasnumpydataframe

解决方案


这是一种使用applymap,df.idxmax()和的方法df.lookup

s=df2.applymap(df1.set_index('team')['points'].get).idxmax(1)

或者更好的替代方法@user3483203

s=df2.stack().map(df1.set_index('team')['points']).unstack().idxmax(1)
#s.tolist() gives ['team2', 'team1', 'team1']
df2['winner']=df2.lookup(s.index,s)
print(df2)

   team1  team2  winner
0      1      5       5
1      2      4       2
2      3      1       3

推荐阅读