如何 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()
我正在对一个组的每个实例进行排名。我只想 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()