python - 将数据框的两列与新的数据框列进行比较
问题描述
我有两个看起来像的数据框
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
解决方案
这是一种使用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
推荐阅读
- c# - 将委托 VB 转换为 C#
- android - 开发服务器返回 403 react native
- linux - 如何在常见模式后显示单词重复的次数
- google-cloud-sql - 项目未启用 Cloud SQL API [sql-component.googleapis.com]
- java - 如何将属性文件中的属性注入 Spring 中的非托管类?
- angular - Angular 2 下拉选项翻译
- flutter - 如何给 Flutter 中的 PopUpMenuButton 一个高度?
- node.js - 将配置文件用于路径、端口、
- python - 将一个列表中的所有元素与另一个列表保持一致
- css - 如何在媒体查询语法中使用 ng-deep?