2017-10-08 33 views
2

實際上,我正在計算給定窗口大小時的吞吐量。 但是,我不知道如何通過窗口來累加值。例如:Python - 通過移動範圍對所有值進行求和

time = [0.9, 1.1, 1.2, 2.1, 2.3, 2.6] 
value = [1, 2, 3, 4, 5, 6] 

施加1窗口尺寸後,我應該得到

new_value = [1, 5, 15] 

我想用數據幀的索引,但不知道如何能夠實現它,因爲我的新的python。

回答

3

你可以使用itertools.groupby用自定義分組功能

​​
In [14]: f([0.9, 1.1, 1.2, 2.1, 2.3, 2.6], [1, 2, 3, 4, 5, 6]) 
Out[14]: [1, 5, 15] 

In [15]: f([0.9, 1.1, 1.2, 2.1, 2.3, 2.6], [1, 2, 3, 4, 5, 6], dt=2) 
Out[15]: [6, 15] 

注意,尺寸爲1的窗口,你可以簡單地使用groupby(time, int)

+0

尼斯。請注意,根據OP的需要,可能需要首先對值進行排序。 –

1

你可以使用一個Counter

time = [0.9, 1.1, 1.2, 2.1, 2.3, 2.6] 
value = [1, 2, 3, 4, 5, 6] 

from collections import Counter 
counter = Counter() 
for t,v in zip(time, value): 
    counter[int(t)] += v 

print(sorted(counter.items())) 
# [(0, 1), (1, 5), (2, 15)] 
相關問題