【问题标题】:Add the remaining quarterly columns that do not have any values添加没有任何值的剩余季度列
【发布时间】:2022-01-16 18:56:23
【问题描述】:

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

  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

我需要将此月度数据转换为三个月总和的季度数据,因此我修改了 here 的代码来做到这一点:

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,因为它位于第一个季度和最后一个季度之间,即使它没有正值。有人知道怎么做吗?

【问题讨论】:

    标签: python pandas dataframe time-series pandas-groupby


    【解决方案1】:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-11
      • 1970-01-01
      • 2011-04-03
      • 2023-01-04
      • 1970-01-01
      • 2016-03-31
      • 1970-01-01
      相关资源
      最近更新 更多