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

基于列名与列值合并在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:15:17