基于其他列索引对列值求和并分配至每行:篮球数据集团队投篮数统计
解决方案:基于现有列快速统计团队总投篮次数
嘿,我来帮你搞定这个需求!咱们完全不用给单个球员写重复的统计代码,靠分组聚合+合并的思路就能轻松实现,下面分工具给你演示——先讲最常用的Python Pandas,再补个SQL写法,你按需取用就行:
一、用Python Pandas实现(最适合数据分析场景)
步骤1:先把示例数据转换成DataFrame
import pandas as pd # 你的示例数据集 data = { 'Player_ID': [1, 2, 3, 4, 2, 3], 'Team': ['Red', 'Blue', 'Red', 'Blue', 'Blue', 'Red'], 'Shot_Count': [14, 12, 23, 15, 14, 23], 'Date': ['12/15/12', '2/14/12', '12/15/12', '3/15/12', '5/2/12', '11/11/12'] } df = pd.DataFrame(data)
步骤2:按球队计算总投篮次数
用groupby按Team分组求和,直接得到每个球队的总投篮数,不用管单个球员:
# 分组求和并重命名列,方便后续区分 team_total = df.groupby('Team')['Shot_Count'].sum().reset_index() team_total.rename(columns={'Shot_Count': 'Team_Total_Shots'}, inplace=True)
步骤3:合并回原数据集
把球队总投篮数和原表关联,这样每一行都会带上对应球队的总次数,同时保留所有原字段:
result_df = pd.merge(df, team_total, on='Team', how='left')
最终输出结果
result_df就是你要的格式,新增的Team_Total_Shots列会对应每一行的球队总投篮数:
| Player_ID | Team | Shot_Count | Date | Team_Total_Shots |
|---|---|---|---|---|
| 1 | Red | 14 | 12/15/12 | 60 |
| 2 | Blue | 12 | 2/14/12 | 41 |
| 3 | Red | 23 | 12/15/12 | 60 |
| 4 | Blue | 15 | 3/15/12 | 41 |
| 2 | Blue | 14 | 5/2/12 | 41 |
| 3 | Red | 23 | 11/11/12 | 60 |
二、用SQL实现(如果数据存在数据库里)
逻辑和Pandas完全一致,先分组求和再关联原表:
SELECT t1.Player_ID, t1.Team, t1.Shot_Count, t1.Date, t2.Team_Total_Shots FROM your_table_name t1 LEFT JOIN ( -- 子查询计算各球队总投篮数 SELECT Team, SUM(Shot_Count) AS Team_Total_Shots FROM your_table_name GROUP BY Team ) t2 ON t1.Team = t2.Team;
为啥这个方法靠谱?
- 完全不用针对单个球员写重复代码,所有统计逻辑都是按团队批量处理的,哪怕新增球员/球队,代码也不用改
- 全程基于现有列计算,没有额外的复杂操作,效率拉满
- 合并/关联操作保证了原数据的完整性,所有字段都能保留
内容的提问来源于stack exchange,提问作者klassic123
相关产品推荐
相关产品推荐

