编程语言
首页 > 编程语言> > python-从Pandas Dataframe写入格式化的二进制文件

python-从Pandas Dataframe写入格式化的二进制文件

作者:互联网

我已经看到了一些方法可以将Python中的格式化二进制文件读取到Pandas,
也就是说,我正在使用这段代码,该代码使用NumPy从以dtype给出的结构格式化的文件中读取.

import numpy as np
import pandas as pd

input_file_name = 'test.hst'

input_file = open(input_file_name, 'rb')
header = input_file.read(96)

dt_header = np.dtype([('version', 'i4'),
                      ('copyright', 'S64'),
                      ('symbol', 'S12'),
                      ('period', 'i4'),
                      ('digits', 'i4'),
                      ('timesign', 'i4'),
                      ('last_sync', 'i4')])

header = np.fromstring(header, dt_header)

dt_records = np.dtype([('ctm', 'i4'),
                       ('open', 'f8'),
                       ('low', 'f8'),
                       ('high', 'f8'),
                       ('close', 'f8'),
                       ('volume', 'f8')])
records = np.fromfile(input_file, dt_records)

input_file.close()

df_records = pd.DataFrame(records)
# Now, do some changes in the individual values of df_records
# and then write it back to a binary file

现在,我的问题是如何将其写回到新文件中.我在NumPy中找不到任何函数(在Pandas中都找不到),该函数允许我确切指定要在每个字段中写入的字节.

解决方法:

我不清楚DataFrame是视图还是副本,但是假设它是副本,则可以使用to_records method of the DataFrame.

这将为您提供一个记录数组,然后您可以使用tofile将其放入磁盘.

例如

df_records = pd.DataFrame(records)
# do some stuff
new_recarray = df_records.to_records()
new_recarray.tofile("myfile.npy")

数据将以打包字节的形式驻留在内存中,其格式由recarray dtype描述.

标签:pandas,binaryfiles,python,numpy
来源: https://codeday.me/bug/20191121/2049686.html