Вычислить разницу между последовательными строками в одном столбце - PullRequest
0 голосов
/ 23 июня 2019

Я пытаюсь вычислить разницу между последовательными строками в столбце Timestamp. Я получаю следующую ошибку на основе моей логики:

Моя переменная журнала содержит данные, подобные приведенным ниже:

['Timestamp:', '1546626931.138813', 'ID:', '0764', 'S', 'DLC:', '8', 00', '00', '00', '00', '00', '00', '00', '00', 'Channel:', '0']
['Timestamp:', '1546626931.138954', 'ID:', '0365', 'S', 'DLC:', '8', 00', '00', '00', '80', 'db', '80', 'a2', '7f', 'Channel:', '1']
['Timestamp:', '1546626931.139053', 'ID:', '0765', 'S', 'DLC:', '8', '0d', '0f', '00', '00', 'fd', '0e', '00', '01', 'Channel:', '1']
['Timestamp:', '1546626931.139289', 'ID:', '0766', 'S', 'DLC:', '8', 'fd', '0e', '02', '01', 'fc', '0e', '03', '01', 'Channel:', '1']
.
.
.
.

Код:

import can
import csv
import datetime
import pandas


filename = open('C:\\Users\\xyz\\Downloads\\BLF File\\output.csv', "w")
log = can.BLFReader('C:\\Users\\xyz\\Downloads\\BLF File\\test.blf')

log_output = []
timestamp = []                        #Variable to store timestamps from blf file
time_del = []                         #Variable to store time difference
print('We are here 1')
for time in log:
    time = str(time).split()
    timestamp.append(float(time[1]))
    # print(timestamp)

print("we are here 2")
count = 0

for i in range(len(timestamp)-1):
    delta_float= timestamp[count+1] - timestamp[count]
    count = count + 1
print(delta_float)

Я получаю следующий вывод:

We are here 1
we ar here 2
0.00022101402282714844
0.0002288818359375
0.00021910667419433594
0.00024199485778808594
.
.
.
.

почему я не получаю правильную разницу в delta_float? Я должен получить что-то вроде ниже на основе того, какие значения у меня есть в переменной журнала, верно?

0.141
0.99
0.236
.
.

Почему эта логика не дает мне разницу между последовательными строками в одном столбце Timestamp?

1 Ответ

1 голос
/ 23 июня 2019

Вы печатаете только одно значение, потому что у вас есть только один оператор print (не считая "мы здесь"), он не находится в теле цикла и печатает скалярное значение. Вам нужно изменить хотя бы одну из этих вещей, вероятно, вторую, чтобы сделать то, что вы хотите, чтобы заставить ее печатать несколько значений.

...