添加没有任何值的其余季度列



我有如下的月度时间序列数据:

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.reindexperiod_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

最新更新