我正在将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
到目前为止,我得到的输出如下:
在我的第一列下,我想要时间戳记值之间的差异(示例-第二行值-第一行时间戳值...第四行时间戳值-第三行时间戳值...等等。 。我应该在代码中添加些什么来实现这一目标?
下面是我希望文件的“时间戳记”字段显示的屏幕截图。 (计算连续行之间的差异)
答案 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)