添加其余没有任何值的季度列
Add the remaining quarterly columns that do not have any values
我有如下每月时间序列数据:
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
with 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
我有如下每月时间序列数据:
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
with 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