按类别获取最大值索引

时间:2017-11-07 18:31:58

标签: python pandas dataframe

我有一个操作数据的数据框。我需要为每个Vendor返回一条记录,其中包含相应的最大Insert Date

#import pandas as pd
#df = pd.read_clipboard() 

Vendor  Insert_Date Total 
Steph   2017-10-25  2
Matt    2017-10-31  13
Chris   2017-11-03  3
Steve   2017-10-23  11
Chris   2017-10-27  3
Steve   2017-11-01  11

我想返回以下结果(顺序无关紧要,除非它影响索引):

Vendor  Insert_Date Total 
Steph   2017-10-25  2
Steve   2017-11-01  11
Matt    2017-10-31  13
Chris   2017-11-03  3

我可以使用Insert Date来检索每个Vendor的最大df.groupby(['Vendor']).agg({'Insert_Date':'max'})但是我想要索引以便我可以使用iloc(或其他形式的loc)并过滤结果。我一直在玩idxmax()一段时间,但似乎无法获得理想的结果

2 个答案:

答案 0 :(得分:2)

使用drop_duplicates

df.sort_values(['Vendor','InsertDate']).drop_duplicates(['Vendor'],keep='last')
Out[1442]: 
  Vendor  InsertDate  Total
2  Chris  2017-11-03      3
1   Matt  2017-10-31     13
0  Steph  2017-10-25      2
5  Steve  2017-11-01     11

答案 1 :(得分:2)

IIUC:

df['Insert Date'] = pd.to_datetime(df['Insert Date'])
df.iloc[df.groupby('Vendor')['Insert Date'].idxmax()]

输出:

  Vendor Insert Date  Total
2  Chris  2017-11-03      3
1   Matt  2017-10-31     13
0  Steph  2017-10-25      2
5  Steve  2017-11-01     11