Это возможно с помощью пользовательской функции:
def round_mean(x):
return round(x.mean(), 2)
df1 = (df.groupby(["Year", "Month Name"])
.agg(Min_days=("Days", 'min'),
Avg_days=("Days", round_mean),
Median_days=('Days','median'),
Count = ('order_date', 'count'))
.reset_index())
print (df1)
Year Month Name Min_days Avg_days Median_days Count
0 2014 Dec 1 1 1 1
1 2014 Jan 2 2 2 1
2 2015 Aug 1 1 1 1
3 2016 Apr 4 4 4 1
К сожалению, лямбда-функция еще не работает:
df1 = (df.groupby(["Year", "Month Name"])
.agg(Min_days=("Days", 'min'),
Avg_days=("Days", lambda x: round(x.mean(), 2)),
Median_days=('Days','median'),
Count = ('order_date', 'count'))
.reset_index())
KeyError: "[('Days', '')] не в индексе "
Но проще круглые значения после:
df1 = (df.groupby(["Year", "Month Name"])
.agg(Min_days=("Days", 'min'),
Avg_days=("Days", 'mean'),
Median_days=('Days','median'),
Count = ('order_date', 'count'))
.reset_index())
df1['Avg_days'] = df1['Avg_days'].round(2)