Python : list index out of range error for filling in data set

Python : list index out of range error for filling in data set

我有一个数据集 [101,102,105,106,108,111] 和相应的时间 [1,2,5,6,8,11]。 当第n次和第n+1次的差不为1时,我需要用零填充数据集。到目前为止我已经尝试了很多,这是一个:

for i in xrange(0,10):
    if time[i+1]-time[i] != 1:
       d.insert(i,data[i])
    else :
       d.insert(i,0)

总的来说,我想要一个新的时间集 [1,2,3,4,5,6,7,8,9,10,11] 和一个新的日期集 [101,102,0,0,105,106,0,108,0,0,111]

从你的问题中不清楚零进入哪个 bin,但这应该让你知道如何解决这个问题:

>>> data = [101,102,105,106,108,111]
>>> [0 if (d - data[i-1] == 1) else d for i,d in enumerate(data)]
[101, 0, 105, 0, 108, 111]
>>> 

以下方法应该有效:

import itertools

data_set = [101,102,105,106,108,111] 
data_times = [1,2,5,6,8,11]

new_time_set = range(data_times[0], data_times[-1]+1)
new_data_set = []

last_time = data_times[0]

for data, time in itertools.izip(data_set, data_times):
    new_data_set.extend([0] * (time-last_time-1) + [data])
    last_time = time    

print "Data:", new_data_set
print "Times:", new_time_set

这将打印以下输出:

Data: [101, 102, 0, 0, 105, 106, 0, 108, 0, 0, 111]
Times: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

更新 - 脚本现在使用时间间隔,而不是数据来填补空白。

如果时间序列使用浮点数:

new_time_set = range(int(data_times[0]), int(data_times[-1])+1)