gpt4 book ai didi

python - 将服装二进制数据文件读入 pandas 数据帧

转载 作者:太空宇宙 更新时间:2023-11-03 21:13:43 25 4
gpt4 key购买 nike

压力扫描仪输出具有以下格式的二进制数据文件

截取二进制文件格式的用户手册:

enter image description here

我喜欢创建一个 pandas 数据框,其中所有字段都位于单独的列中,并且温度和压力数组解压缩在单独的列中。

我不太熟悉阅读服装二进制文件,可以使用一些帮助来开始。

最诚挚的问候,一月

最佳答案

这里有一个解决方案,展示了如何操作。我只读取一条记录,并且没有实现所有列(很长),只是一些。您只需添加缺少的列即可。所以我已经在不同的列中分解了温度和压力,只需阅读循环即可。

我使用库位字符串的最后一件事,这确实简化了二进制读取,这里我使用大端,因为文件格式就是这种格式

一些读物bitstring

import pandas as pd
from bitstring import ConstBitStream

#creating columns names
columnNames = ['pType', 'pSize', 'fNumber', 'scT', 'unitconv', 'exTrigger']
for i in range(8):
columnNames.append('Temp' + str(i+1))
for i in range(64):
columnNames.append('Pressure' + str(i+1))

columnNames.append('fTime_sec');columnNames.append('fTime_nano')

df = pd.DataFrame(columns=columnNames)
print(df)

s = ConstBitStream(filename='e:\\+poub\\test.pdf')

index = 0
#you could do a loop if more records in file
#read file bytes and put in the equivalent column of dataframe
df.at[index, 'pType']= s.read(4 * 8).intbe #read 4 bytes int big endian
df.at[index, 'pSize'] = s.read(4 * 8).intbe #again
df.at[index, 'fNumber'] = s.read(4 * 8).intbe
df.at[index, 'scT'] = s.read(4 * 8).intbe
df.at[index, 'unitconv'] = s.read(4 * 8).intbe
df.at[index, 'exTrigger'] = s.read(4 * 8).uintbe #read uint big endian
#read 8 temp of 4 bytes in floatb be
for i in range(8):
df.at[index, 'Temp' + str(i+1)] = s.read(4 * 8).floatbe
#read 64 pressure of 4 bytes in floatbe
for i in range(64):
df.at[index, 'Pressure' + str(i+1)]= s.read(4 * 8).floatbe
df.at[index, 'fTime_sec'] = s.read(4 * 8).intbe
df.at[index, 'fTime_nano'] = s.read(4 * 8).intbe

print(df)

关于python - 将服装二进制数据文件读入 pandas 数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54865563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com