大熊猫结转的最后一个价值

时间:2015-09-11 23:57:17

标签: 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

我需要通过携带最后一个观察值来建模一小时的数据并得到以下输出:

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

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

2 个答案:

答案 0 :(得分:2)

虽然您可以附加到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

答案 1 :(得分:0)

您可以附加行i(在您的情况下为i == 3jj == 8

bin = df.iloc[i].copy()  # to avoid modifying the original dataframe
for _ in range(j):
    bin['bin'] += 5 
    df = df.append(bin, ignore_index=True)   

df指的是您的pandas.DataFrame对象。