Вы можете дополнительно агрегировать минимальную дату даты при группировке, а затем сортировать группу по этой минимальной дате (и, если хотите, удалить столбец даты из результата):
import numpy as np
import pandas as pd
d = { "Item" : ["Apple", "Apple", "Pear", "Pear", "Orange", "Orange"],
"Amount": [1000, 2000, 30, 40, 400, 50],
"DateSold": ["2018-02-01", "2018-06-01", "2018-01-01", "2018-02-20", "2018-04-15", "2018-04-30"]}
df = pd.DataFrame(data=d)
grouped_df = df.groupby(['Item'], as_index=False).agg({"Amount":np.sum, "DateSold":np.min})
grouped_and_sorted_df = grouped_df.sort_values('DateSold', ascending=True)[["Item","Amount"]]
В этом примере df
будет:
Item Amount DateSold
0 Apple 1000 2018-02-01
1 Apple 2000 2018-06-01
2 Pear 30 2018-01-01
3 Pear 40 2018-02-20
4 Orange 400 2018-04-15
5 Orange 50 2018-04-30
и grouped_and_sorted_df
будут:
Item Amount
2 Pear 70
0 Apple 3000
1 Orange 450