Используйте agg
и передайте список функций для вашего groupby
объекта:
In[108]:
df.groupby('A').agg(['first','last'])
Out[108]:
datetime
first last
A
1 2019-03-04 00:03:00 2019-03-04 00:07:00
2 2019-03-04 00:05:00 2019-03-04 00:08:00
3 2019-03-04 00:09:00 2019-03-04 00:13:00
4 2019-03-04 00:12:00 2019-03-04 00:12:00
При необходимости вы можете позвонить reset_index
:
In[109]:
df.groupby('A').agg(['first','last']).reset_index()
Out[109]:
A datetime
first last
0 1 2019-03-04 00:03:00 2019-03-04 00:07:00
1 2 2019-03-04 00:05:00 2019-03-04 00:08:00
2 3 2019-03-04 00:09:00 2019-03-04 00:13:00
3 4 2019-03-04 00:12:00 2019-03-04 00:12:00
Это вызывает first
и last
для каждой группы
Обновление
Спасибо @ Wen-Ben за предложение, если мы выберем один столбец, то это не создаст мультииндекс в df:
In[110]:
df.groupby('A')['datetime'].agg(['first','last'])
Out[110]:
first last
A
1 2019-03-04 00:03:00 2019-03-04 00:07:00
2 2019-03-04 00:05:00 2019-03-04 00:08:00
3 2019-03-04 00:09:00 2019-03-04 00:13:00
4 2019-03-04 00:12:00 2019-03-04 00:12:00
Что соответствует вашему желаемому выводу