为了账号安全,请及时绑定邮箱和手机立即绑定

如何对 groupby 结果的第一个值求和并将其写为相关组中的 df 列

如何对 groupby 结果的第一个值求和并将其写为相关组中的 df 列

白猪掌柜的 2022-06-02 16:22:36
我有一个看起来像这样的数据框(请参见下文):Player Name         Team                    PlayerMarketValueSteph Curry         Golden State Warriors   169027.4782Steph Curry         Golden State Warriors   169027.4782Steph Curry         Golden State Warriors   169027.4782Steph Curry         Golden State Warriors   169027.4782Lebron James        All Stars               120896.3772Lebron James        All Stars               120896.3772Lebron James        All Stars               120896.3772Luka Doncic         All Stars               36789.6562Luka Doncic         All Stars               36789.6562Luka Doncic         All Stars               36789.6562我正在尝试找到一种对两者进行分组的好方法Team,然后PlayerName从这个中提取第一个实例,PlayerMarketValue然后对其求和,然后将此值写入其各自的Team.在到达以下位置后,我遇到了障碍:NBAData['TotalTeamVal'] = NBAData.groupby(['Team', 'Player Name'])['PlayerMarketValue'].first().sum()即:我正在寻找(All Stars特别注意行):
查看完整描述

3 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

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

  1. 删除与每个玩家关联的重复行

  2. 总结团队中球员的价值观

  3. DataFrame使用团队列作为键重置索引并将所有内容合并回主目录

pd.merge(df, 
         df.drop_duplicates('Player Name').groupby(['Team'])['PlayerMarketValue'].sum().reset_index(), 
         on='Team', 
         suffixes= ['', '_Team']
         )


查看完整回答
反对 回复 2022-06-02
?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

您可以对新数据框进行分组,获取总值并合并回来:

df.merge(df.groupby(['Player Name', 'Team'])
           .PlayerMarketValue.first()
           .groupby(['Team']).sum(),
         left_on='Team',
         right_index=True,
         suffixes=('','Total'))


查看完整回答
反对 回复 2022-06-02
?
POPMUISE

TA贡献1765条经验 获得超5个赞

你可以试试下面提到的方法。我希望这能帮到您。

NBAData=NBAData.groupby(["Player_name","Team"]).first()


查看完整回答
反对 回复 2022-06-02
  • 3 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信