我有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数据框中对此进行编码的最佳方法是什么?请&感谢。
答案 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 == 3
)j
次j == 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
对象。