将DataFrame分组以获取最大索引

时间:2017-10-28 04:03:10

标签: python pandas-groupby

我的数据框类似于以下内容:

    Year    class   Sales
0   1980    1   1.10
1   1980    2   7.07
2   1980    3   8.00
3   1980    4   12.00
4   1981    1   11.20
5   1981    1   2.00
6   1981    3   4.00
7   1981    2   6.00

我希望对我的数据进行分组,以便获得类的年度最大销售额并获取该数据帧的类。在此之后我需要做什么?

data.groupby(['Year','class']).sum()
        Sales
Year    class   
1980    1   1.10
        2   7.07
        3   8.00
        4   12.00
1981    1   13.20
        2   6.00
        3   4.00

e.g。我希望我的输出是这样的:

       Sales
Year   class

1980   4     12.00
1981   1     13.20

我能够使用循环获得正确的输出,但我试图避免这种情况,因为它花费了太多时间。

1 个答案:

答案 0 :(得分:1)

一种方法是,在您完成第一次分组后,您可以在年份(索引级别= 0)上执行一秒钟以查找最大销售额的索引:

In [41]: d2
Out[41]: 
            Sales
Year class       
1980 1       1.10
     2       7.07
     3       8.00
     4      12.00
1981 1      13.20
     2       6.00
     3       4.00

In [42]: d2["Sales"].groupby(level=0).idxmax()
Out[42]: 
Year
1980    (1980, 4)
1981    (1981, 1)
Name: Sales, dtype: object

In [43]: d2.loc[d2["Sales"].groupby(level=0).idxmax()]
Out[43]: 
            Sales
Year class       
1980 4       12.0
1981 1       13.2