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

Python中为网球赛事数据集新增两选手过往交手记录列的实现方法

解决方案

你可以直接用pandas库的内置函数实现该需求,全程无需自行编写嵌套循环,底层经过C优化,处理百万级数据也能保持很高效率。

实现逻辑

  1. 先将数据集按比赛日期升序排序,保证后续判断的是当前记录之前的历史交手
  2. 对每组对阵的两个选手姓名排序后生成唯一标识,避免「A对阵B」和「B对阵A」被识别为不同对阵
  3. 用groupby+cumcount统计每个对阵的历史出现次数,即可快速判断是否已有交手记录

代码示例

import pandas as pd

# 假设你已将数据集读入为DataFrame,对应字段名分别为:date(比赛日期)、player1(选手1)、player2(选手2)
# 1. 日期格式转换+按时间升序排序
df['date'] = pd.to_datetime(df['date'])
df = df.sort_values('date').reset_index(drop=True)

# 2. 生成无顺序的对阵唯一标识
df['match_pair'] = df.apply(lambda x: tuple(sorted([x['player1'], x['player2']])), axis=1)

# 3. 生成Match History字段,布尔值:True代表之前已有交手,False代表首次交手
df['Match History'] = df.groupby('match_pair').cumcount() > 0

# 可选:如果需要文本标识可替换上一步为:
# df['Match History'] = df.groupby('match_pair').cumcount().apply(lambda x: '已有交手' if x>0 else '首次交手')

# 可选:删除临时生成的对阵标识列
df = df.drop('match_pair', axis=1)

注意事项

  • 必须保证数据集按比赛日期升序排序,否则会出现判断逻辑错误
  • 提前清洗选手姓名字段,避免大小写、拼写变体、缩写差异导致同一选手被识别为不同人

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:27:03