如何 return 分组中最大值的行 Pandas?

How to return the rows from the largest value from a group by in Pandas?

我正在对一个组的每个实例进行排名。我只想 return 出现最大“排名”的行。在这个例子中,我唯一想要 return 的行是每个州分组中“排名”最大的行。

import pandas as pd
import numpy as np
 
data = {'Product':['Box','Bottles','Pen','Markers','Bottles','Pen','Markers','Bottles','Box','Markers','Markers','Pen'], 
        'State':['Alaska','California','Texas','North Carolina','California','Texas','Alaska','Texas','North Carolina','Alaska','California','Texas'], 
        'Sales':[14,24,31,12,13,7,9,31,18,16,18,14]}
 
df1=pd.DataFrame(data, columns=['Product','State','Sales']) 
df1

df1['Rank'] = df1.groupby(['State'])['Sales'].cumcount().add(1)

使用:

In [1001]: df1[df1['Rank'].eq(df1.groupby('State')['Rank'].transform('max'))]
Out[1001]: 
    Product           State  Sales  Rank
8       Box  North Carolina     18     2
9   Markers          Alaska     16     3
10  Markers      California     18     3
11      Pen           Texas     14     4

不确定所需的输出应该是什么样的,但根据您的要求,下面应该可以工作。我直到只给你每个州/每个产品的最高排名

>>> df1.groupby(['State','Product'], as_index=False).max()