我的数据框类似于以下内容:
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
我能够使用循环获得正确的输出,但我试图避免这种情况,因为它花费了太多时间。
答案 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