2017-12-03 11 views
0

データは基本的に各ラップに独自の経過時間がある一連のラップですが、合計経過時間を計算しようとしています。 時系列サンプル(ラップ)の繰り返しからの経過時間を計算します

はここで同様のデータを持っているいくつかのコードです:

lap laptime timediff elapsed 
0  1  1  NaN  1 
1  1  2  1.0  2 
2  1  3  1.0  3 
3  1  4  1.0  4 
4  1  5  1.0  5 
5  2  1  -4.0  6 
6  2  2  1.0  7 
7  2  3  1.0  8 
8  2  4  1.0  9 
9  2  5  1.0  10 
10 3  1  -4.0  11 
11 3  2  1.0  12 
12 3  3  1.0  13 
13 3  4  1.0  14 
14 3  5  1.0  15 

経過時間は、私が実際に計算するために必要なものです:

import pandas as pd 
import numpy as np 
laptime = pd.Series([1,2,3,4,5,1,2,3,4,5,1,2,3,4,5]) 
lap = pd.Series([1,1,1,1,1,2,2,2,2,2,3,3,3,3,3]) 
timeblocks = pd.DataFrame({'laptime': laptime, 'lap': lap}) 
timeblocks['timediff'] = timeblocks.laptime.diff() 
timeblocks['elapsed'] = 
pd.Series([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]) 
timeblocks 

結果のデータは次のようになります。私は、時間差とcumsumといじり回すの様々な形を試みたが、ちょっと固まった。

実世界のデータをより次のようになります。

実世界のデータの場合
113.81201171875 1 
113.86206054688 1 
113.912109375 1 
113.96215820313 1 
0.05126953125 2 
0.101318359375 2 
0.1513671875 2 

、サンプル・レートは、約0.05秒です。データを仮定

+0

「laptime」はあなたが蓄積しようとしているものですか?あなただけの合計が欲しいですか?あなたのサンプルデータに期待される結果は何ですか? – wwii

+0

'elapsed'から計算したい予想されるもの/結果 'elapsed'です。現実の世界では、私は「laptime」と「lap」しか持っていません。実際のサンプルデータは2番目のブロックです。 –

答えて

0
import io, operator, itertools 

は、テキストファイルや複数行の文字列である:

s = '''113.81201171875 1 
113.86206054688 1 
113.912109375 1 
113.96215820313 1 
0.05126953125 2 
0.101318359375 2 
0.1513671875 2''' 
f = io.StringIO(s) 

は、リストにデータを収集します。ラップと時間でリストを並べ替えます。ラップでデータをグループ化し、最大と最小の時間を抽出します。経過したラップタイムを計算する。痛む。

data = [] 
for line in f: 
    time, lap = map(float, line.strip().split()) 
    data.append((time, lap)) 

lap = operator.itemgetter(1) 
time = operator.itemgetter(0) 

data.sort(key = operator.itemgetter(1,0)) 
total = 0 
for el, times in itertools.groupby(data, lap): 
    low, *_, high = map(time, times) 
    elapsed = high - low 
    print(f'lap {el}, elapsed time: {elapsed}') 
    total += elapsed 
print(f'total elapsed time: {total}') 


>>> 
lap 1.0, elapsed time: 0.15014648438000222 
lap 2.0, elapsed time: 0.10009765625 
total elapsed time: 0.2502441406300022 
>>> 
関連する問題