返回一个python数据框,其中包含每个公司最高销售额的整行

返回一个python数据框,其中包含每个公司最高销售额的整行,python,pandas,dataframe,Python,Pandas,Dataframe,假设我有以下数据表: import pandas as pd data = {'Company':['ELCO','ELCO','ELCO','BOBCO','BOBCO','BOBCO','LAMECO','LAMECO','LAMECO'], 'Person':['Sam','Mikey','Amy','Vanessa','Carl','Sarah','Emily','Laura','Steve'], 'Sales':[220,123,312,125,263,32

假设我有以下数据表:

import pandas as pd
data = {'Company':['ELCO','ELCO','ELCO','BOBCO','BOBCO','BOBCO','LAMECO','LAMECO','LAMECO'],
       'Person':['Sam','Mikey','Amy','Vanessa','Carl','Sarah','Emily','Laura','Steve'],
       'Sales':[220,123,312,125,263,321,243,275,198]}
df = pd.DataFrame(data)
df
我如何从逻辑上提取数据,最终得到一个数据表,它只显示每个公司的最高“销售额”,而不保留最高销售额的整行数据。换句话说,我如何使用条件逻辑等获得附加图像底部显示的较小数据帧

数据帧输出

您需要
groupby().idxmax()
loc

df.loc[df.groupby('Company').Sales.idxmax()]
输出:

  Company Person  Sales
5   BOBCO  Sarah    321
2    ELCO    Amy    312
7  LAMECO  Laura    275
注意:上述信息仅为每家公司提供一名销售人员。如果您希望每个公司的所有销售人员都有最大销售额,您需要
转换

 df[df['Sales'] == df.groupby('Company').Sales.transform('max')]

这正是我想要的。非常感谢。