【问题标题】:How do I complement daily data according to data updated quarterly?如何根据每季度更新的数据补充每日数据?
【发布时间】:2020-04-23 06:59:05
【问题描述】:

对于不同的用户,他们的数据每季度更新一次,但不是在同一天。

对于用户'a',他的数据的pd.Series是:

2018-01-01 556
2018-04-01 498
2018-07-02 318

日期是系列的索引。 同样,对于用户'b',他的数据是:

2018-01-02 123
2018-04-02 456
2018-07-01 789

首先,我想将季度数据转换为每日数据。例如,对于“a”,“2018-01-02”和“2018-03-31”之间的数据应该仍然是 556,因为它还没有更新。

然后,我想在一个数据框中连接“a”和“b”的数据。预期的输出应该是:

             a    b
2018-01-01 556  NaN
2018-01-02 556  123
...
2018-03-31 556  123
2018-04-01 498  123
2018-04-02 498  456
2018-04-03 498  456
...
2018-06-30 498  456
2018-07-01 498  789
2018-07-02 318  789

有两个问题让我困惑:

  1. 如何补缺日期?
  2. “a”和“b”不是在同一天更新的。如何对齐?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    使用concatDataFrame.asfreq 并通过ffill 前向填充错误值:

    df = pd.concat([a, b], axis=1, keys=('a','b')).asfreq('D').ffill()
    print (df)
                    a      b
    2018-01-01  556.0    NaN
    2018-01-02  556.0  123.0
    2018-01-03  556.0  123.0
    2018-01-04  556.0  123.0
    2018-01-05  556.0  123.0
              ...    ...
    2018-06-28  498.0  456.0
    2018-06-29  498.0  456.0
    2018-06-30  498.0  456.0
    2018-07-01  498.0  789.0
    2018-07-02  318.0  789.0
    
    [183 rows x 2 columns]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-26
      • 1970-01-01
      • 2021-04-14
      • 2020-01-20
      • 1970-01-01
      • 1970-01-01
      • 2012-06-08
      • 2021-09-24
      相关资源
      最近更新 更多