pandas 中结转的最后一个值

pyn*_*yne 3 python pandas

我有 20 分钟的观察数据,按 5 分钟分箱排列,如下所示:

  bin   var1    var2    var3    var4
    5   -76.30  71.96   557.79  0.06
    10  -61.23  78.14   600.69  0.09
    15  -54.36  73.63   630.71  0.03
    20  -12.41  71.46   661.19  0.08
Run Code Online (Sandbox Code Playgroud)

我需要通过向前移动最后一个观察值来对一小时的数据进行建模,并获得以下输出:

bin var1    var2    var3    var4
5   -76.30  71.96   557.79  0.06
10  -61.23  78.14   600.69  0.03
15  -54.36  73.63   630.71  0.09
20  -12.41  71.46   661.19  0.08
25  -12.41  71.46   661.19  0.08
30  -12.41  71.46   661.19  0.08
35  -12.41  71.46   661.19  0.08
40  -12.41  71.46   661.19  0.08
45  -12.41  71.46   661.19  0.08
50  -12.41  71.46   661.19  0.08
55  -12.41  71.46   661.19  0.08
60  -12.41  71.46   661.19  0.08
Run Code Online (Sandbox Code Playgroud)

在 pandas 数据框中对此进行编码的最佳方法是什么?请&谢谢。

chr*_*isb 5

虽然您可以附加到 DataFrame,但这是一个相对低效的操作,因为每个步骤都需要一个副本。 reindex提供了一种将数据与新索引对齐的简单方法,然后您可以使用方法向前填充值fillna

In [31]: df = df.set_index('bin')
    ...: df = df.reindex(range(5, 65, 5)).fillna(method='ffill')


In [32]: df
Out[32]: 
      var1   var2    var3  var4
bin                            
5   -76.30  71.96  557.79  0.06
10  -61.23  78.14  600.69  0.09
15  -54.36  73.63  630.71  0.03
20  -12.41  71.46  661.19  0.08
25  -12.41  71.46  661.19  0.08
30  -12.41  71.46  661.19  0.08
35  -12.41  71.46  661.19  0.08
40  -12.41  71.46  661.19  0.08
45  -12.41  71.46  661.19  0.08
50  -12.41  71.46  661.19  0.08
55  -12.41  71.46  661.19  0.08
60  -12.41  71.46  661.19  0.08
Run Code Online (Sandbox Code Playgroud)