基于列名与列值合并在DF1中创建新列:添加主队年度全明星数量列
解决方法:给DF1添加主队当年度全明星球员数量列
嘿,我来帮你搞定这个需求!要给你的DF1新增一列,显示每行主队在对应赛季的全明星球员数量,咱们可以按以下步骤来操作:
步骤1:确定比赛对应的赛季年份
NBA赛季是跨年度的(比如2012年10月的比赛属于2012-13赛季,全明星赛在赛季中期的次年2月左右),所以首先得把每场比赛映射到正确的赛季:
import pandas as pd # 先把Date列转为datetime格式(如果还没转的话) df1['Date'] = pd.to_datetime(df1['Date']) # 生成赛季列:10-12月的比赛属于当前年份+1的赛季,其余月份属于当前年份赛季 df1['Season'] = df1['Date'].dt.year + (df1['Date'].dt.month >= 10).astype(int)
步骤2:准备全明星球员数量数据集
你需要一个包含球队名称、赛季和对应赛季全明星人数的数据集。如果没有现成的,你可以从NBA官方数据或者篮球统计网站整理,这里先给你一个示例数据集:
# 示例:2012-13赛季各队全明星人数(你需要替换成真实数据) all_star_counts = pd.DataFrame({ 'Team': [ 'Cleveland Cavaliers', 'Los Angeles Lakers', 'Miami Heat', 'Utah Jazz', 'San Antonio Spurs', 'Washington Wizards', 'Dallas Mavericks', 'Boston Celtics', 'New Orleans Pelicans' ], 'Season': [2013]*9, 'Home_All_Star_Count': [1, 2, 2, 1, 1, 0, 1, 1, 0] })
步骤3:合并数据,生成目标列
把DF1和全明星数据集按主队名称和赛季进行匹配,就能得到每行对应的全明星人数:
# 合并两个数据集,保留DF1的所有行 df1 = df1.merge( all_star_counts, left_on=['Home', 'Season'], right_on=['Team', 'Season'], how='left' ) # 处理缺失值:如果某队该赛季没有全明星,填充为0 df1['Home_All_Star_Count'] = df1['Home_All_Star_Count'].fillna(0).astype(int) # 删掉合并后多余的Team列 df1 = df1.drop('Team', axis=1)
最终效果
处理后的DF1会新增Season和Home_All_Star_Count两列,其中Home_All_Star_Count就是你想要的每行主队当年度全明星球员数量啦!
内容的提问来源于stack exchange,提问作者stretchy
相关产品推荐
相关产品推荐

