假设我有以下数据表:
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输出
答案 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')]