gpt4 book ai didi

python - Pandas 数据帧 : How to groupby on a groupby?

转载 作者:行者123 更新时间:2023-12-01 04:46:05 26 4
gpt4 key购买 nike

我试图概括我提出的问题 here .

mlb 数据框看起来像

    Player             Position          Salary     Year
0 Mike Witt Pitcher 1400000 1988
1 George Hendrick Outfielder 989333 1988
2 Chili Davis Outfielder 950000 1988
3 Brian Downing Designated Hitter 900000 1988
4 Bob Boone Catcher 883000 1988
5 Bob Boone Catcher 883000 1989
6 Frank Smith Catcher 993000 1988
7 Frank Smith Pitcher 1300000 1989

请注意,同一位球员可能会在不同年份多次被列出。我正在尝试找到每个位置的总薪水最高的球员。输出应该类似于:

    Position           Player            Salary    
0 Pitcher Mike Witt 1400000
1 Outfielder George Hendrick 989333
2 Brian Downing Designated Hitter 900000
3 Catcher Bob Boone 1766000

我想我需要做一些事情,比如按位置分组,然后按球员分组,然后对每个球员求和并找到最大值。但我在做这件事时遇到了麻烦。

一旦我执行positions = mlb.groupby("Position"),我就无法执行下一步。我认为 Player 的嵌套 groupby 是必要的,但我不知道如何继续。

最佳答案

这很困惑,但完成了工作。

df = pd.DataFrame({'Player':['Mike Witt','George Hendrick','Chili Davis','Brian Downing','Bob Boone','Bob Boone'],
'Position':['Pitcher','Outfielder','Outfielder','Designated Hitter','Catcher','Catcher'],
'Salary':[1400000,989333, 950000,900000,883000,900000],
'Year':[1988,1988,1988,1988,1988,1988]})

gp = df.groupby(['Player','Position']).sum()['Salary'].to_frame().reset_index()
gp.sort('Salary',ascending=False).drop_duplicates('Position')

或者

gp.groupby('Position').max()

就像 @dawg 提到的那样,这本质上会将具有多个位置的球员视为不同的球员,因此他们每个位置的薪水如下所示。

            Player           Position   Salary
0 Bob Boone Catcher 1783000
4 Mike Witt Pitcher 1400000
3 George Hendrick Outfielder 989333
1 Brian Downing Designated Hitter 900000

关于python - Pandas 数据帧 : How to groupby on a groupby?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29379898/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com