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

Python 2中如何对比两个赛季球员统计DataFrame的行?

处理跨赛季球员数据对比的思路

嗨,这个问题得完全看你的分析目标来决定,不用急着直接移除那些只参加了一个赛季的球员~我给你分两种常见场景拆解:

场景1:只关心同时参加两个赛季的球员

如果你的核心需求是对比同一球员在冬、秋两赛季的表现变化,那确实可以只保留两个赛季都有记录的球员。这时候用Pandas的merge方法,指定how='inner'就能自动筛选出交集:

import pandas as pd

# 假设两个DataFrame的匹配主键是player_id(优先用唯一ID,避免重名坑)
both_seasons_df = pd.merge(
    winter_stats, 
    fall_stats, 
    on='player_id', 
    suffixes=('_winter', '_fall')  # 给同名字段加后缀区分赛季
)

这样得到的both_seasons_df里就只有两个赛季都参赛的球员,直接可以对比他们的各项统计数据了。

场景2:需要覆盖所有参赛球员

如果你的分析要统计整个联赛的球员参赛覆盖情况,或者想看看“仅参加单赛季的球员表现有什么特点”,那绝对不能删除这些单赛季记录!这时候用how='outer'做全量合并,缺失的赛季数据会用NaN填充:

all_players_df = pd.merge(
    winter_stats, 
    fall_stats, 
    on='player_id', 
    suffixes=('_winter', '_fall'), 
    how='outer'
)

之后你还可以给数据加个标记列,方便区分球员的参赛情况:

def get_participation(row):
    has_winter = pd.notna(row['points_winter'])  # 这里用某个必有的统计字段举例,比如得分
    has_fall = pd.notna(row['points_fall'])
    if has_winter and has_fall:
        return '两个赛季都参加'
    elif has_winter:
        return '仅参加冬季赛季'
    else:
        return '仅参加秋季赛季'

all_players_df['参赛情况'] = all_players_df.apply(get_participation, axis=1)

额外提醒

你提到的“删除重复项”是处理同一赛季内的重复球员记录(比如某球员在一个赛季里被重复录入),和跨赛季的单记录问题完全是两个场景,别搞混啦~另外如果用球员姓名作为匹配键,一定要注意重名的情况,优先用俱乐部给的唯一player_id来匹配,避免合并出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:17:00