如何在Pandas中匹配列值后将另一DataFrame数据追加为新列?
跨赛季球员数据关联:添加下赛季PPG字段
核心思路
通过球员唯一标识(优先用联盟官方球员ID,无ID时可暂用姓名)将下赛季(DF2)的PPG数据映射到本赛季(DF1)中,用左连接保留本赛季所有球员,无下赛季数据的球员对应字段自动填充NaN。
步骤实现
1. 构造示例数据(模拟你的DF1和DF2)
import pandas as pd # 本赛季数据(DF1) df1 = pd.DataFrame({ 'Player': ['Michael Jordan', 'Scottie Pippen', 'Dennis Rodman'], 'PPG': [31.7, 19.4, 5.5], 'RPG': [6.7, 7.3, 16.1] }) # 下赛季数据(DF2) df2 = pd.DataFrame({ 'Player': ['Michael Jordan', 'Scottie Pippen', 'Steve Kerr'], 'PPG': [28.4, 15.2, 8.7], 'RPG': [5.8, 6.0, 1.5] })
2. 提取并映射下赛季PPG
从DF2中筛选需要的字段并重命名,再通过左连接合并到DF1:
# 提取DF2的球员与下赛季PPG,重命名列避免和本赛季PPG冲突 df2_next_ppg = df2[['Player', 'PPG']].rename(columns={'PPG': 'PPG Next Season'}) # 左连接合并,保留DF1全部球员数据 result_df = df1.merge(df2_next_ppg, on='Player', how='left')
3. 查看最终结果
print(result_df)
输出:
Player PPG RPG PPG Next Season 0 Michael Jordan 31.7 6.7 28.4 1 Scottie Pippen 19.4 7.3 15.2 2 Dennis Rodman 5.5 16.1 NaN
额外优化建议
- 避免重名匹配错误:如果数据集存在同名球员,必须替换为唯一球员ID作为连接键,否则会出现数据匹配混乱。
- 自定义缺失值显示:单赛季球员的
PPG Next Season会显示NaN,可根据需求替换:# 替换为0 result_df['PPG Next Season'] = result_df['PPG Next Season'].fillna(0) # 或替换为说明文本 result_df['PPG Next Season'] = result_df['PPG Next Season'].fillna('无下赛季数据') - 多字段扩展:如果需要添加更多下赛季数据(如
RPG Next Season),只需在提取DF2字段时新增对应列并重命名即可。
内容的提问来源于stack exchange,提问作者ryan
相关产品推荐
相关产品推荐

