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

如何在Python Pandas中按年份匹配添加TS%_mean和TS%_SD列

解决方法:使用Pandas的merge函数替代循环

不用手动写循环,直接用pandas内置的merge()函数就能高效实现按年份匹配并添加列的需求,这比循环更可靠且性能更优。

假设你的两个DataFrame结构

  • 球员年度数据(记为df_player):包含球员信息、年份及其他比赛数据,示例结构:

    PlayerYearPTS...
    LeBron202025...
    Curry202132...
  • 年份统计数据(记为df_year_stats):包含年份、TS%均值和标准差,示例结构:

    YearTS%_meanTS%_SD
    20200.560.08
    20210.570.07

核心代码实现

import pandas as pd

# 按年份匹配,将TS%_mean和TS%_SD合并到球员数据中
# how='left' 确保保留df_player的所有行,匹配不到年份的行会显示NaN
merged_df = pd.merge(df_player, df_year_stats[['Year', 'TS%_mean', 'TS%_SD']], on='Year', how='left')

特殊情况处理

如果你的需求是按球员+年份的组合匹配(比如每个球员自身每年的TS%均值和标准差),只需修改on参数为组合键:

merged_df = pd.merge(df_player, df_year_stats[['Player', 'Year', 'TS%_mean', 'TS%_SD']], on=['Player', 'Year'], how='left')

注意事项

  • 确保两个DataFrame中用于匹配的列(比如Year或Player+Year)数据类型一致,如果一个是字符串、一个是整数,先统一类型:
    df_player['Year'] = df_player['Year'].astype(int)
    df_year_stats['Year'] = df_year_stats['Year'].astype(int)
    
  • 如果df_year_stats中有多余列,合并时只选择需要的列(比如示例中的['Year', 'TS%_mean', 'TS%_SD']),避免引入无关数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:10:37