首页 > 解决方案 > 如何对 groupby 结果的第一个值求和并将其写为相关组中的 df 列

问题描述

我有一个看起来像这样的数据框(请参见下文):

Player Name         Team                    PlayerMarketValue

Steph Curry         Golden State Warriors   169027.4782
Steph Curry         Golden State Warriors   169027.4782
Steph Curry         Golden State Warriors   169027.4782
Steph Curry         Golden State Warriors   169027.4782
Lebron James        All Stars               120896.3772
Lebron James        All Stars               120896.3772
Lebron James        All Stars               120896.3772
Luka Doncic         All Stars               36789.6562
Luka Doncic         All Stars               36789.6562
Luka Doncic         All Stars               36789.6562

我正在尝试找到一种对两者进行分组的好方法Team,然后PlayerName从这个中提取第一个实例,PlayerMarketValue然后对它求和,然后将这个值写入其各自的Team.

在到达以下位置后,我遇到了障碍:

NBAData['TotalTeamVal'] = NBAData.groupby(['Team', 'Player Name'])['PlayerMarketValue'].first().sum()

即:我正在寻找(All Stars特别注意行):

在此处输入图像描述

标签: pythonpandasdataframeanalysis

解决方案


在不了解数据结构的情况下,我会假设一名球员只能加入其中一支球队,因此我会开始

  1. 删除与每个玩家关联的重复行
  2. 总结团队中球员的价值观
  3. DataFrame使用团队列作为键重置索引并将所有内容合并回主目录
pd.merge(df, 
         df.drop_duplicates('Player Name').groupby(['Team'])['PlayerMarketValue'].sum().reset_index(), 
         on='Team', 
         suffixes= ['', '_Team']
         )

推荐阅读