Вы должны использовать groupby.agg
для применения нескольких функций агрегирования.
Обратите внимание, что с помощью Pandas многие функции агрегации могут вызываться через строки. В этом случае вы можете использовать 'size'
, 'min'
и 'max'
. Использование строк рекомендуется, поскольку Pandas отображает строковое представление в проверенные и эффективные алгоритмы.
Вот демоверсия:
df = pd.DataFrame([['2017-01-14', 1], ['2017-12-05', 2], ['2017-06-15', 2],
['2017-03-21', 1], ['2017-04-25', 2], ['2017-02-12', 1]],
columns=['transdate', 'custid'])
df['transdate'] = pd.to_datetime(df['transdate'])
agg_dict = {'count': 'size', 'first': 'min', 'last': 'max'}
res = df.groupby('custid')['transdate'].agg(agg_dict)
print(res)
count first last
custid
1 3 2017-01-14 2017-03-21
2 3 2017-04-25 2017-12-05