-3

我有一个[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]

4

2 回答 2

0

从您的问题中不清楚零进入哪个箱,但这应该让您了解如何解决问题:

>>> 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]
>>> 
于 2015-07-20T15:24:43.957 回答
0

以下方法应该有效:

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)
于 2015-07-20T15:32:09.690 回答