python - 将列中的值匹配的不同行中的 1 个值相加
问题描述
我目前有 2 个数据集。第一个包含我计算出的具有价值观的足球队列表。
我有第二个数据集,其中包含今天正在比赛的球队列表
我想做的是将两支球队的平均人数添加到数据集2,所以结果将是
我查看了 Stack Overflow 并没有找到任何可以提供帮助的东西。我对使用 Pandas 很陌生,所以我不确定这是否可能。
作为示例数据集:
data1 = {
'DATAMECI': ['17/06/2020', '17/06/2020'],
'ORAMECI': ['11:30', '15:30'],
'TXTECHIPA1': ['Everton', 'Man City'],
'TXTECHIPA2': ['Hull', 'Leeds'],
}
data2 = {
'Team': ['Hull', 'Leeds','Everton', 'Man City'],
'Home0-0': ['80', '78','80', '66'],
'Home1-0': ['81', '100','90', '70'],
'Away0-1': ['88', '42','75', '69'],
}
期望的输出是
Desired = {
'DATAMECI': ['17/06/2020', '17/06/2020'],
'ORAMECI': ['11:30', '15:30'],
'TXTECHIPA1': ['Everton', 'Man City'],
'TXTECHIPA2': ['Hull', 'Leeds'],
'Home0-0': ['80', '72'],
'Home1-0': ['86', '85'],
'Away0-1': ['86', '56',],
}
解决方案
与迭代行相反的另一个选项是您可以合并数据集,然后迭代列。
我还注意到你想要的输出是四舍五入的,所以我也有
样本:
data1 = pd.DataFrame({
'DATAMECI': ['17/06/2020', '17/06/2020'],
'ORAMECI': ['11:30', '15:30'],
'TXTECHIPA1': ['Everton', 'Man City'],
'TXTECHIPA2': ['Hull', 'Leeds'],
})
data2 = pd.DataFrame({
'Team': ['Hull', 'Leeds','Everton', 'Man City'],
'Home0-0': ['80', '78','80', '66'],
'Home1-0': ['81', '100','90', '70'],
'Away0-1': ['88', '42','75', '69'],
})
Desired = pd.DataFrame({
'DATAMECI': ['17/06/2020', '17/06/2020'],
'ORAMECI': ['11:30', '15:30'],
'TXTECHIPA1': ['Everton', 'Man City'],
'TXTECHIPA2': ['Hull', 'Leeds'],
'Home0-0': ['80', '72'],
'Home1-0': ['86', '85'],
'Away0-1': ['86', '56',],
})
代码:
import pandas as pd
cols = [ x for x in data2 if 'Home' in x or 'Away' in x ]
data1 = data1.merge(data2.rename(columns={'Team':'TXTECHIPA1'}), how='left', on=['TXTECHIPA1'])
data1 = data1.merge(data2.rename(columns={'Team':'TXTECHIPA2'}), how='left', on=['TXTECHIPA2'])
for col in cols:
data1[col] = data1[[col + '_x', col + '_y']].astype(int).mean(axis=1).round(0)
data1 = data1.drop([col + '_x', col + '_y'], axis=1)
输出:
print(data1)
DATAMECI ORAMECI TXTECHIPA1 TXTECHIPA2 Home0-0 Home1-0 Away0-1
0 17/06/2020 11:30 Everton Hull 80.0 86.0 82.0
1 17/06/2020 15:30 Man City Leeds 72.0 85.0 56.0
推荐阅读
- python - python中的paste0类似函数用于多个字符串
- android - 将自定义 ArrayAdapter 添加到可扩展列表视图
- java - mailCatcher 有什么用?
- html - 两个 div 重叠以及如何获取 div 的自动高度
- asp.net - ASP.NET MVC Core Visual Studios Mac:找不到类型或命名空间
- java - 我想使用会话存储将变量传递到另一个页面,它给了我 java.lang.IllegalStateException
- node.js - BBC 消费者 SQS 投票
- azure - Azure 可用性集和归置组之间的区别
- excel - 基于日期范围的 Excel VBA 范围选择
- javafx - 将 TableView 数据显示到另一个窗口中包含 JavaFx 中的 TextField