Pandas实现将对阵双方xG值映射至新列的方法
处理对阵记录DataFrame,补充双方xG值
可以通过将原DataFrame与它的"反向"版本合并,快速为每条记录匹配对手的xG值,具体步骤如下:
假设你的原始DataFrame名为df,结构如下:
team adversary xG 0 Liverpool City 1.80 1 City Liverpool 1.21
- 先创建一个反向对阵的DataFrame,互换球队和对手的列,并重命名xG列用于区分:
reverse_df = df.rename(columns={ 'team': 'adversary', 'adversary': 'team', 'xG': 'xG_adversary' })
- 将原DataFrame和反向DataFrame按
team和adversary列合并,同时重命名原xG列为xG_team:
result_df = df.merge(reverse_df, on=['team', 'adversary'], how='left') result_df = result_df.rename(columns={'xG': 'xG_team'})
处理后的result_df就会得到你需要的格式:
team adversary xG_team xG_adversary 0 Liverpool City 1.80 1.21 1 City Liverpool 1.21 1.80
如果原数据中存在部分对阵没有反向记录的情况,how='left'会保留这些记录,对应的xG_adversary会显示为NaN,你可以根据实际需求将how参数改为inner,只保留有双向对阵记录的条目。
内容的提问来源于stack exchange,提问作者8-Bit Borges
相关产品推荐
相关产品推荐

