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

标签 python pandas dataframe

我试图概括我提出的问题 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/

相关文章:

Python speedtest.net,或等效的

python - 如何在 python 中替换/删除字符串

python - 在 Pandas 中使用特定的图形处理程序

r - 将列表中的所有矩阵转换为 R 中的 data.frames

python - 从 flask 中的 mysql 提取信息时出现问题

Python 与 iis 导入模块

python - 如何从合并表创建 MultiIndex Dataframe?

python - Pandas read_excel 不读取某些 xlsx 文件,返回空数据框

python - 将 Matplotlib 图形保存为全屏图像

python - 如何遍历python中的两列?