我想从 MDF 文件转换为 Dataframe

我使用像 asammdf 或 mdfreader 这样的 MDF 文件。但是我的数据文件太大了。所以,我想读取特定数据并制作一个数据框。

  1. mdf 数据读取器使用 asammdf from asammdf import MDF
    case in mdfreader,有很多错误,因为我的 mdf 文件是同名数据,重采样时有些麻烦(错误数据出来)

filename = test_t16.dat" ; 我的 MDF 数据文件

yop = MDF(文件名); 使用 asammdf 的 mdf 阅读器

whl_rr = yop.get('WHL_SPD_RR') ;我从 mdf 文件中选取一些数据(yop)

whl_rr =

invalidation_bits = {NoneType} 无

master_metadata = {tuple} ('TimeChannel', 1)

name = {str} 'WHL_SPD_RR'

原始 = {bool} 假

样本 = {ndarray} [0. ... 0.]

来源 = {NoneType} 无

stream_sync = {bool} 假

时间戳 = {ndarray} [ 240.4053 ... 2050.81525]

unit = {str} 'km/h' > 我想要这样的数据框

from asammdf import MDF

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt


filename = r"C:\Users\wonyo\PycharmProjects\test\test_t16.dat"

yop = MDF(filename)


signallist = [ "WHL_SPD_RR","WHL_SPD_FR", "WHL_SPD_RL","WHL_SPD_FL"]


df=[]

def group_len(yop, start, stop):             

    for i in range(start, stop):           

        if yop.get_group(i).empty != True:

            if i == start:

                max_len = len(yop.get_group(i).TimeChannel)

                min_time = min(yop.get_group(i).TimeChannel)


            else:

                max_len = min(max_len, len(yop.get_group(i).TimeChannel))

                min_time = max(min_time, min(yop.get_group(i).TimeChannel))


    return max_len-1000, max(242, min_time + 2) 


grlen_time = group_len(yop, 68, 140)

max_len = grlen_time[0]

min_time = grlen_time[1]

time = np.linspace(0, (max_len - 1) * 0.01, max_len)


for i in range(0,5):


    signal = yop.get(signallist[i])

    signal.timestamps = signal.timestamps - min_time

    signal = signal.interp(time)

    data_sg = signal.samples

    name_sg = signal.name

    inex_sg = signal.timestamps

    mydata = pd.DataFrame( data =data_sg , index=index_sg, columns=name_sg)

    print(df)


whl_spd_fl = signal()

慕的地6264312
浏览 394回答 3
3回答

DIEA

df= mdf.filter(signallist).export(fmt='pandas')

一只甜甜圈

yop = MDF(file_name, memory='minimum')to_keep = ['Channl1', 'Channel2', ('CR_Bms_Soc_Pc', 102) ] # and so ondf = yop.filter(to_keep).cut(start=240, stop=2050).export('pandas', raster=0.01)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python