亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我想從 MDF 文件轉換為 Dataframe

我想從 MDF 文件轉換為 Dataframe

慕的地6264312 2021-09-11 16:02:18
我使用像 asammdf 或 mdfreader 這樣的 MDF 文件。但是我的數據文件太大了。所以,我想讀取特定數據并制作一個數據框。mdf 數據讀取器使用 asammdf from asammdf import MDFcase 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 MDFimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltfilename = 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()
查看完整描述

3 回答

?
DIEA

TA貢獻1820條經驗 獲得超3個贊

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


查看完整回答
反對 回復 2021-09-11
?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

yop = MDF(file_name, memory='minimum')


to_keep = ['Channl1', 'Channel2', ('CR_Bms_Soc_Pc', 102) ] # and so on

df = yop.filter(to_keep).cut(start=240, stop=2050).export('pandas', raster=0.01)


查看完整回答
反對 回復 2021-09-11
  • 3 回答
  • 0 關注
  • 465 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號