You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中基于同日期对手与球队匹配条件合并行?

合并同日期下互为对手的比赛记录

实现思路

核心是通过配对标识快速定位同日期内互为对手的比赛行,再分组合并数据:

  1. 为每条记录生成唯一配对键:将date、排序后的team和opponent拼接,确保互为对手的两行键值一致
  2. 按配对键分组,对每组内的记录进行合并:提取对手的进球数(gf)和失球数(ga)作为新字段
  3. 过滤重复行,保留目标记录(优先保留主场行)

代码实现

import pandas as pd

# 替换为你的大型DataFrame
data = {
    'date': ['2017-08-11', '2017-08-11', '2017-08-11', '2019-08-11'],
    'venue': ['Home', 'Away', 'Home', 'Home'],
    'result': ['W', 'L', 'D', 'D'],
    'gf': [4, 1, 2, 1],
    'ga': [1, 4, 0, 0],
    'team': ['Arsenal', 'Burnley', 'Fulham', 'Arsenal'],
    'opponent': ['Burnley', 'Arsenal', 'Leeds', 'Burnley']
}
df = pd.DataFrame(data)

# 生成配对键:同日期下,互为对手的记录会有相同的键
df['pair_key'] = df.apply(
    lambda row: '_'.join([row['date']] + sorted([row['team'], row['opponent']])),
    axis=1
)

# 分组处理配对记录
def process_pair_group(group):
    if len(group) == 2:
        # 优先保留主场记录,若没有则取第一行
        main_record = group[group['venue'] == 'Home']
        if main_record.empty:
            main_record = group.iloc[[0]]
        # 获取对手的记录
        opp_record = group[group.index != main_record.index[0]]
        # 添加对手的进球/失球字段
        main_record['gf_opponent'] = opp_record['gf'].values[0]
        main_record['ga_opponent'] = opp_record['ga'].values[0]
        return main_record
    # 无配对的记录直接返回
    else:
        return group

# 应用分组逻辑并清理临时字段
merged_df = df.groupby('pair_key', group_keys=False).apply(process_pair_group).reset_index(drop=True)
merged_df = merged_df.drop(columns=['pair_key'])

# 输出结果
print(merged_df)

运行结果

date venue result  gf  ga     team opponent  gf_opponent  ga_opponent
0  2017-08-11  Home      W   4   1  Arsenal  Burnley          1.0          4.0
1  2017-08-11  Home      D   2   0   Fulham    Leeds          NaN          NaN
2  2019-08-11  Home      D   1   0  Arsenal  Burnley          NaN          NaN

补充说明

  • 无配对记录的空值可通过merged_df.fillna('')替换为空字符串
  • 若需调整保留记录的规则(比如优先特定球队),修改process_pair_group内的筛选逻辑即可
  • 分组操作效率较高,适配大型DataFrame处理

内容的提问来源于stack exchange,提问作者Miserry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 18:25:34