分组 DataFrame 以获得最大索引
Grouping DataFrame to get max index
我有一个类似于这样的数据框:
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
我希望对我的数据进行分组,以便获得 class 的年度最大销售额并获得该数据框的 class。之后我需要做什么?
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
例如我希望我的输出是这样的:
Sales
Year class
1980 4 12.00
1981 1 13.20
我能够使用循环获得正确的输出,但我试图避免这种情况,因为它需要太多时间。
一种方法是,在您完成第一个 groupby 之后,您可以仅在年份(索引级别 = 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
我有一个类似于这样的数据框:
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
我希望对我的数据进行分组,以便获得 class 的年度最大销售额并获得该数据框的 class。之后我需要做什么?
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
例如我希望我的输出是这样的:
Sales
Year class
1980 4 12.00
1981 1 13.20
我能够使用循环获得正确的输出,但我试图避免这种情况,因为它需要太多时间。
一种方法是,在您完成第一个 groupby 之后,您可以仅在年份(索引级别 = 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