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

使用replace方法后如何从DataFrame中筛选每个球员的首个赛季数据

问题根因

  • 你调用的sort_values、drop_duplicates两个方法默认都不会修改原DataFrame,而是返回新对象,你没有对返回结果赋值,因此排序、去重操作实际上都没有生效
  • 排序规则不符合需求:你当前仅按球员名称排序,没有按赛季升序排列,无法保证每个球员的最早赛季排在分组的第一条
  • 球员名称清洗逻辑冗余:手动匹配*/+后缀、手动replace的方式容易漏匹配,增加不必要的代码量

修复方案

你可以直接用以下逻辑替换原有代码的末尾部分即可解决问题:

# 统一清洗球员名称,一次性去掉所有*、+后缀,无需手动逐个replace
mid_data['Player'] = mid_data['Player'].str.strip('*+')

# 先按球员名称升序、再按赛季升序排序,保证每个球员的最早赛季排在分组最前面
# 必须将排序结果赋值回变量,或者在方法中加inplace=True参数才能生效
final_data = mid_data[['Player', 'Tm'] + cols].sort_values(by = ['Player', 'Season'], ascending=True)

# 去重保留每个球员第一条(即最早赛季)的记录,同样需要赋值回变量
final_data = final_data.drop_duplicates(subset = 'Player', keep='first')

如果需要进一步简化代码,原有构建mid_data的四次append逻辑也可以替换为更简洁的写法,无需循环逐个球员匹配:

mid_data = data_radar[data_radar['Player'].str.strip('*+').isin(player_list)].copy()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:15:05