如何在Python Pandas中按年份匹配添加TS%_mean和TS%_SD列
解决方法:使用Pandas的merge函数替代循环
不用手动写循环,直接用pandas内置的merge()函数就能高效实现按年份匹配并添加列的需求,这比循环更可靠且性能更优。
假设你的两个DataFrame结构
球员年度数据(记为
df_player):包含球员信息、年份及其他比赛数据,示例结构:Player Year PTS ... LeBron 2020 25 ... Curry 2021 32 ... 年份统计数据(记为
df_year_stats):包含年份、TS%均值和标准差,示例结构:Year TS%_mean TS%_SD 2020 0.56 0.08 2021 0.57 0.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
相关产品推荐
相关产品推荐

