我有一个操作数据的数据框。我需要为每个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()
一段时间,但似乎无法获得理想的结果
答案 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