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
相关产品推荐
相关产品推荐

