Есть ли в пандах способ найти второе самое раннее время в группе?В этом фрейме данных я хочу найти второй самый ранний раз, когда покупатель совершает покупку в определенной ветви, и сохранить столбец ветви после групповых покупателей (для целей будущего подсчета).
import pandas as pd
import numpy as np
import datetime
df = pd.DataFrame({'Branch' : 'A A A A A A A B B C'.split(),
'Buyer': 'Carl Mark Carl Carl Joe Joe Joe Carl Mark Joe'.split(),
'Date':[datetime.datetime(2013,1,1,13,0),datetime.datetime(2013,1,1,13,5),datetime.datetime(2013,10,1,20,0),datetime.datetime(2013,10,2,10,0),datetime.datetime(2013,10,1,20,0),datetime.datetime(2013,10,2,10,0),datetime.datetime(2013,12,2,12,0),datetime.datetime(2013,12,2,14,0), datetime.datetime(2013,11,2,14,0), datetime.datetime(2013,11,5,14,0)]})
Я мог бы найти самое раннее времядля каждого покупателя в определенном филиале, как показано ниже:
df.groupby('Buyer').agg({'Date':'min', 'Branch':'first'})
У меня проблемы с поиском второго самого раннего.Я пытался использовать nsmallest (2) и last () для второго самого раннего, но это включало бы некоторые из самых ранних, если покупатель посетил только один филиал.И я также хотел бы сохранить столбец ветвления в выходной таблице.
Как я могу найти второе самое раннее время, сохраняя тот же формат, что и для группы, которую я делал выше?Спасибо!