如何对 groupby 结果的第一个值求和并将其写为相关组中的 df 列
How to sum the first values of a groupby result and write this as a df column across the relevant group
我有一个看起来像这样的数据框(请参见下文):
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
行):
在不太了解数据结构的情况下,我会假设一名球员只能参加其中一支球队,因此我会开始
- 删除与每个玩家关联的重复行
- 总结球队球员的价值
- 重置索引并将所有内容合并回主
DataFrame
,使用团队列作为键
pd.merge(df,
df.drop_duplicates('Player Name').groupby(['Team'])['PlayerMarketValue'].sum().reset_index(),
on='Team',
suffixes= ['', '_Team']
)
您可以在新数据框上分组,获取总值并合并回来:
df.merge(df.groupby(['Player Name', 'Team'])
.PlayerMarketValue.first()
.groupby(['Team']).sum(),
left_on='Team',
right_index=True,
suffixes=('','Total')
)
您可以试试下面的方法。希望对您有所帮助。
NBAData=NBAData.groupby(["Player_name","Team"]).first()
我有一个看起来像这样的数据框(请参见下文):
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
行):
在不太了解数据结构的情况下,我会假设一名球员只能参加其中一支球队,因此我会开始
- 删除与每个玩家关联的重复行
- 总结球队球员的价值
- 重置索引并将所有内容合并回主
DataFrame
,使用团队列作为键
pd.merge(df,
df.drop_duplicates('Player Name').groupby(['Team'])['PlayerMarketValue'].sum().reset_index(),
on='Team',
suffixes= ['', '_Team']
)
您可以在新数据框上分组,获取总值并合并回来:
df.merge(df.groupby(['Player Name', 'Team'])
.PlayerMarketValue.first()
.groupby(['Team']).sum(),
left_on='Team',
right_index=True,
suffixes=('','Total')
)
您可以试试下面的方法。希望对您有所帮助。
NBAData=NBAData.groupby(["Player_name","Team"]).first()