计算同一列中时间戳值之间的差异

时间:2019-06-21 21:51:20

标签: python python-3.x pandas filenames python-datetime

我正在将Blf文件转换为制表符分隔的文件。我能够从下面列表中的文件中提取所有有用的信息。我想计算一列中的时间戳值之间的差。请查找到目前为止附带的代码:

import can
import csv
import datetime
import pandas as pd

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

# print ("We are here!")
log_output = []

for msg in log:
    msg = str(msg).split()
    #print (msg)

    data_list = msg[7:(7 + int(msg[6]))]

    log_output_entry = [(msg[1]), msg[3], msg[6], " ".join(data_list), msg[-1]]
    log_output_entry.insert(1, 'ID=')
    test_entry = " \t ".join(log_output_entry)  # join the list and remove string quotes in the csv file

    filename.write(test_entry + '\n')

df = pd.DataFrame(log_output)
df.columns = ['Timestamp', 'ID', 'DLC','Channel']

filename.close()  # Close the file outside the loop

到目前为止,我得到的输出如下:

enter image description here

在我的第一列下,我想要时间戳记值之间的差异(示例-第二行值-第一行时间戳值...第四行时间戳值-第三行时间戳值...等等。 。我应该在代码中添加些什么来实现这一目标?

下面是我希望文件的“时间戳记”字段显示的屏幕截图。 (计算连续行之间的差异)

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以使用mon Yr Average stdev Var 1 2,011 1231.9032 366.3764 134231.7003 2 2,011 1721.9643 391.3279 153137.5344 1 2,012 3120.7742 858.6585 737294.3684

pandas.DataFrame.shift

请记住,您当前拥有的文件似乎在要写入的文本文件的列之间具有可变长度,因此可能很难直接插入到熊猫中。也许以下方法会起作用:

df['Time Delta'] = df['Timestamp'] - df['Timestamp'].shift(periods=1, axis=0)