Используйте groupby
и агрегируйте sum
с DatetimeIndex.weekday_name
и для заказа дней возможны 2 способа - заказанные категориалы или reindex
:
cats = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
days = pd.Categorical(df.index.weekday_name, categories=cats, ordered=True)
df = df.groupby(days).sum()
print (df)
ANZ_Volume BHP_Volume CBA_Volume MQG_Volume NAB_Volume
Monday 16035969 69443817 11774899 3873975 14580491
Tuesday 25195619 107807393 22495279 8351280 28760602
Wednesday 15369538 62518397 10789075 5647183 19270582
Thursday 12800091 57745947 8918402 3891956 14090425
Friday 0 0 0 0 0
Saturday 0 0 0 0 0
Sunday 11371761 52774069 8546630 2516785 15114129
Альтернативное решение:
cats = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
df = df.groupby(df.index.weekday_name).sum().reindex(cats)
print (df)
ANZ_Volume BHP_Volume CBA_Volume MQG_Volume NAB_Volume
Date
Monday 16035969.0 69443817.0 11774899.0 3873975.0 14580491.0
Tuesday 25195619.0 107807393.0 22495279.0 8351280.0 28760602.0
Wednesday 15369538.0 62518397.0 10789075.0 5647183.0 19270582.0
Thursday 12800091.0 57745947.0 8918402.0 3891956.0 14090425.0
Friday NaN NaN NaN NaN NaN
Saturday NaN NaN NaN NaN NaN
Sunday 11371761.0 52774069.0 8546630.0 2516785.0 15114129.0
df = df.groupby(df.index.weekday_name).sum().reindex(cats, fill_value=0)
print (df)
ANZ_Volume BHP_Volume CBA_Volume MQG_Volume NAB_Volume
Date
Monday 16035969 69443817 11774899 3873975 14580491
Tuesday 25195619 107807393 22495279 8351280 28760602
Wednesday 15369538 62518397 10789075 5647183 19270582
Thursday 12800091 57745947 8918402 3891956 14090425
Friday 0 0 0 0 0
Saturday 0 0 0 0 0
Sunday 11371761 52774069 8546630 2516785 15114129