Когда вы применяете функцию groupby к DataFrame, он делает столбец groupby индексом (ContractDate в вашем случае). Поэтому вам нужно сначала сбросить индекс, чтобы он стал столбцом.
df = pd.DataFrame({'month':['jan','feb','jan','feb'],'v2':[23,56,12,59]})
t = df.groupby('month').agg('sum')
Вывод:
v2
month
feb 115
jan 35
Итак, как вы видите, в качестве индекса вы получаете месяцы. Затем, когда вы сбрасываете индекс:
t.reset_index()
Выход:
month v2
0 feb 115
1 jan 35
Далее, когда вы применяете несколько функций agg к одному столбцу в groupby, он создает мультииндексированный фрейм данных. Так что вам нужно сделать это как одноуровневый индекс:
t = df.groupby('month').agg({'v2': [np.sum, np.mean, np.min, np.max]}).rename(columns={'sum': 'sum_amount', 'mean': 'avg_amount', 'amin': 'min_amount', 'amax': 'max_amount'})
v2
sum_amount avg_amount min_amount max_amount
month
feb 115 57.5 56 59
jan 35 17.5 12 23
Он создал multiindex.Если вы проверяете t.columns, вы получаете
MultiIndex(levels=[['v2'], ['avg_amount', 'max_amount', 'min_amount', 'sum_amount']],
labels=[[0, 0, 0, 0], [3, 0, 2, 1]])
Теперь используйте это:
t.columns = t.columns.get_level_values(1)
t.reset_index(inplace=True)
Вы получите чистый фрейм данных:
month sum_amount avg_amount min_amount max_amount
0 feb 115 57.5 56 59
1 jan 35 17.5 12 23
Надеюсь, это поможет вам при построении графика.