【问题标题】:Pandas - how to build and expanding window dataframe from a seriesPandas - 如何从系列中构建和扩展窗口数据框
【发布时间】:2021-05-20 14:11:05
【问题描述】:

我不允许使用任何 df.expanding().apply() 解决方案,但需要通过以下方法。 因此,给定一个 pd.Series 例如

2008-12-31    1.4174
2009-01-01    1.4184
2009-01-02    1.4098
2009-01-05    1.4000
2009-01-06    1.3882
2009-01-07    1.4079
2009-01-08    1.4045
2009-01-09    1.4148
2009-01-12    1.4716
2009-01-13    1.4979

我想构建一个数据框,例如

2008-12-31  1.4174  1.4174  1.4174  1.4174  1.4174
2009-01-01  1.4184  1.4184  1.4184  1.4184  1.4184
2009-01-02  1.4098  1.4098  1.4098  1.4098  1.4098
2009-01-05  1.4000  1.4000  1.4000  1.4000  1.4000
2009-01-06  1.3882  1.3882  1.3882  1.3882  1.3882
2009-01-07  NaN     1.4079  1.4079  1.4079  1.4079
2009-01-08  NaN     NaN     1.4045  1.4045  1.4045
2009-01-09  NaN     NaN     NaN     1.4148  1.4148
2009-01-12  NaN     NaN     NaN     NaN     1.4716
2009-01-13  NaN     NaN     NaN     NaN     NaN

我该如何继续?谢谢

【问题讨论】:

    标签: python pandas apply rolling-computation


    【解决方案1】:

    您可以使用shift 并使用for 循环构造数据框:

    pd.DataFrame({
        i: s.shift(i).shift(-i) for i in range(1,6)
    })
    

    输出:

                     1       2       3       4       5
    Date                                              
    2008-12-31  1.4174  1.4174  1.4174  1.4174  1.4174
    2009-01-01  1.4184  1.4184  1.4184  1.4184  1.4184
    2009-01-02  1.4098  1.4098  1.4098  1.4098  1.4098
    2009-01-05  1.4000  1.4000  1.4000  1.4000  1.4000
    2009-01-06  1.3882  1.3882  1.3882  1.3882  1.3882
    2009-01-07  1.4079  1.4079  1.4079  1.4079     NaN
    2009-01-08  1.4045  1.4045  1.4045     NaN     NaN
    2009-01-09  1.4148  1.4148     NaN     NaN     NaN
    2009-01-12  1.4716     NaN     NaN     NaN     NaN
    2009-01-13     NaN     NaN     NaN     NaN     NaN
    

    【讨论】:

      猜你喜欢
      • 2021-04-25
      • 1970-01-01
      • 1970-01-01
      • 2016-08-10
      • 2019-11-10
      • 2021-12-21
      • 2019-06-18
      • 1970-01-01
      • 2019-01-17
      相关资源
      最近更新 更多