返回一个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')]
这正是我想要的。非常感谢。