返回带有完整行的python DataFrame,其中包含各公司的最高销售额

时间:2019-12-10 19:56:14

标签: 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,321,243,275,198]}
df = pd.DataFrame(data)
df

我将如何逻辑地提取数据,最后得到一个数据表,该表仅显示每家公司最高的“销售”,而保留这些最高销售数字的完整行。换句话说,我如何使用条件逻辑等获取显示在所附图像底部的较小DataFrame?

DataFrame输出

1 个答案:

答案 0 :(得分:0)

您想要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

注意:以上内容仅给您每个公司一个销售人员。如果您要所有销售人员在每个公司中的最高销售额,则需要transform

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