0

我正在使用包asammdf加载许多大型.mf4文件。这些文件有很多我不感兴趣的通道,输入是我程序的瓶颈。所以我的问题是:

我可以以某种方式仅从文件中加载特定通道以加快输入过程吗?

我现在正在做的是加载整个文件并在转换为 pandas 期间指定通道Dataframe

from asammdf import MDF

if __name__ == '__main__':
    path = 'C:/path/to/some/file.mf4'
    mdfObj = MDF(path, version='4.10')
    columns=['A','B','C']
    df = mdfObj.to_dataframe(channels=columns)
4

2 回答 2

2

您已经在使用正确的方法。打开文件时,仅加载元数据,并且仅根据需要读取实际的通道样本(当您调用to_dataframe时)。

瓶颈可能是您没有提供raster参数(请参阅此处的文档https://asammdf.readthedocs.io/en/latest/api.html#asammdf.mdf.MDF.to_dataframe),在这种情况下将使用所选通道的所有时间戳的联合构建输出数据帧,并对所有列进行插值。玩转光栅参数

from asammdf import MDF

if __name__ == '__main__':
    path = 'C:/path/to/some/file.mf4'
    mdfObj = MDF(path, version='4.10')
    columns=['A','B','C']
    # 0.1s
    df = mdfObj.to_dataframe(channels=columns, raster=0.1)
    # or use the time stamps of channel 'A'
    df = mdfObj.to_dataframe(channels=columns, raster='A')  

编辑:@Jonas 从 6.1.0 版开始,可以使用channels参数https://asammdf.readthedocs.io/en/development/tips.html#selective-channel-loading进行选择性文件加载

from asammdf import MDF

if __name__ == '__main__':
    path = 'C:/path/to/some/file.mf4'
    
    columns=['A','B','C']
    
    mdfObj = MDF(path, channels=columns)
于 2020-01-17T17:12:01.397 回答
-1

你可以使用这个:

from asammdf import MDF ,Signal 

mdf=MDF(version='4,10')

Signal= mdf.get("name of the signal")
于 2021-08-10T09:23:24.983 回答