我有如下的月度时间序列数据:
Item 2020 Jan 2020 Feb 2020 Mar 2020 Jul 2020 Aug 2020 Sep
0 A 0 1 2 3 4 5
1 B 5 4 3 2 1 0
我需要将这个月的数据转换为三个月的季度数据,所以我从这里修改了代码:
df = df.groupby(pd.PeriodIndex(df.columns, freq='Q'), axis=1).sum()
得到的df
如下:
Item 2020 Q1 2020 Q3
0 A 3 12
1 B 12 3
然而,我希望列出介于两者之间的所有季度,而不仅仅是值大于0的季度。所以我想要的输出如下:
Item 2020 Q1 2020 Q2 2020 Q3
0 A 3 0 12
1 B 12 0 3
因此,在这个输出中,有一个额外的列Q2
,因为它位于第一个和最后一个四分之一周期之间,即使它没有正值。有人知道怎么做吗?
将DataFrame.reindex
与period_range
:一起使用
df = df.set_index('Item')
df.columns = pd.to_datetime(df.columns)
df = df.groupby(pd.PeriodIndex(df.columns, freq='Q'), axis=1).sum()
df = df.reindex(pd.period_range(df.columns.min(), df.columns.max(), freq='Q'), axis=1, fill_value=0)
print (df)
2020Q1 2020Q2 2020Q3
Item
A 3 0 12
B 12 0 3