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

2023-12-25

我已经看到了一些将 Python 中的格式化二进制文件读取到 Pandas 的方法, 也就是说,我使用的代码使用 NumPy fromfile 进行读取,该文件使用 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 中也没有),它允许我准确指定要在每个字段中写入的字节。


熊猫现在提供多种格式 https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html比 tofile() 更稳定。 tofile() 最适合快速文件存储,您不希望文件在数据可能具有不同字节序(大/小字节序)的不同计算机上使用。

Format Type Data Description     Reader         Writer
text        CSV                  read_csv       to_csv
text        JSON                 read_json      to_json
text        HTML                 read_html      to_html
text        Local clipboard      read_clipboard to_clipboard
binary      MS Excel             read_excel     to_excel
binary      HDF5 Format          read_hdf       to_hdf
binary      Feather Format       read_feather   to_feather
binary      Parquet Format       read_parquet   to_parquet
binary      Msgpack              read_msgpack   to_msgpack
binary      Stata                read_stata     to_stata
binary      SAS                  read_sas    
binary      Python Pickle Format read_pickle    to_pickle
SQL         SQL                  read_sql       to_sql
SQL         Google Big Query     read_gbq       to_gbq

对于中小型文件,我更喜欢 CSV,因为格式正确的 CSV 可以存储任意字符串数据,是人类可读的,并且在实现前两个目标的同时,与任何格式一样简单。

我曾经使用过 HDF5,但如果我在 Amazon,我会考虑使用 Parquet。

使用示例to_hdf https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_hdf.html:

df.to_hdf('tmp.hdf','df', mode='w')
df2 = pd.read_hdf('tmp.hdf','df')

我不再喜欢 HDF5 格式。长期归档存在严重风险,因为相当复杂 https://cyrille.rossant.net/moving-away-hdf5/。它有 150 页的规范,并且只有一个 300,000 行的 C 实现。

相比之下,只要您只使用 Python 工作,pickle 格式声称具有长期稳定性 https://docs.python.org/3/library/pickle.html:

pickle序列化格式保证是向后的 跨 Python 版本兼容提供了兼容的 pickle 选择协议并且 pickling 和 unpickling 代码处理 Python 2 到 Python 3 类型差异(如果您的数据跨越该唯一值) 打破改变语言的界限。

然而,pickle 允许执行任意代码,因此应谨慎对待来源不明的 pickles。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Pandas Dataframe 写入格式化的二进制文件 的相关文章

  • Numpy 沿轴最大值

    我在这里错过了什么吗 我希望np max在下面的代码片段中将返回 0 4 gt gt gt a array 1 2 0 4 gt gt gt np max a axis 0 array 1 4 感谢您的指点 看起来您想要包含最大值的行 对吧
  • KFold 和 ShuffleSplit CV 有什么区别?

    看起来 KFold 每次迭代对象时都会生成相同的值 而 Shuffle Split 每次都会生成不同的索引 它是否正确 如果是这样 其中一个相对于另一个有什么用处 cv cross validation KFold 10 n folds 2
  • 如何从谷歌云存储桶读取音频文件并在datalab笔记本中使用ipd播放

    我想在数据实验室笔记本中播放我从谷歌云存储桶中读取的声音文件 这个怎么做 import numpy as np import IPython display as ipd import librosa import soundfile as
  • html 解析器 python

    我正在尝试解析一个网站 我正在使用 HTMLParser 模块 问题是我想解析第一个 a href 评论后 但我真的不知道该怎么做 所以我在文档中发现有一个函数叫做handle comment 但我还没有找到如何正确使用它 我有以下内容 i
  • 为什么我的scoped_session 引发 AttributeError: 'Session' object has no attribute 'remove'

    我正在尝试建立一个系统 将数据库操作优雅地推迟到单独的线程 以避免在 Twisted 回调期间发生阻塞 到目前为止 这是我的方法 from contextlib import contextmanager from sqlalchemy i
  • 使用 Scipy imsave 将 Numpy 数组保存到图像时保留未更改的数据

    使用 Scipy 保存二维 Numpy 数组 单个值 时toimage or imsave像素值与 Numpy 数组中的像素值不完全匹配 相反 在某些区域 主要是边缘 图像算法似乎使用某种插值 是否有一个选项可以停止插值并保留准确的数据 例
  • 在 Flask (WSGI) 中使用全局单例,我是否需要担心竞争条件? [复制]

    这个问题在这里已经有答案了 Flask 的 hello world 演示是 from flask import Flask app Flask name app route def hello return Hello World if n
  • 如何使用 Pandas 将巨大的 CSV 转换为 SQLite?

    我有一个巨大的表 大约 60 GB 采用存档的 CSV 文件形式 我想将其转换为 SQLite 文件 我现在所做的事情如下 import pandas import sqlite3 cnx sqlite3 connect db sqlite
  • Django - 电子邮件发送两次

    每当我使用如下所示的电子邮件设置从views py调用下面的方法时 电子邮件的两份副本都会发送给收件人 并且我收到如下所示的错误 def sendEmailBasic request msg EmailMessage Request Cal
  • Python 视频框架

    我正在寻找一个 Python 框架 它将使我能够播放视频并在该视频上绘图 用于标记目的 我尝试过 Pyglet 但这似乎效果不是特别好 在现有视频上绘图时 会出现闪烁 即使使用双缓冲和所有这些好东西 而且似乎没有办法在每帧回调期间获取视频中
  • pip 安装软件包两次

    不幸的是我无法重现它 但我们已经见过几次了 pip 将一个软件包安装两次 如果卸载第一个 第二个就会可见并且也可以被卸载 我的问题 如果一个包安装了两次 如何用 python 检查 背景 我想编写一个测试来检查这一点 devOp Updat
  • 一起使用 Flask 和 Tornado?

    我是以下的忠实粉丝Flask 部分是因为它很简单 部分是因为它有很多扩展 http flask pocoo org extensions 然而 Flask 是为了在 WSGI 环境中使用而设计的 而 WSGI 不是非阻塞的 所以 我相信 它
  • 如何在 Python 中从 HTML 页面中提取 URL [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我必须用Python 编写一个网络爬
  • Spark中的count和collect函数抛出IllegalArgumentException

    当我使用时抛出此异常时 我尝试在本地 Spark 上加载一个小数据集count 在 PySpark 中 take 似乎有效 我试图搜索这个问题 但没有找到原因 看来RDD的分区有问题 有任何想法吗 先感谢您 sc stop sc Spark
  • Django 接受 AM/PM 作为表单输入

    我试图弄清楚如何使用 DateTime 字段在 Django 中接受 am pm 作为时间格式 但我遇到了一些麻烦 我尝试在 forms py 文件中这样设置 pickup date time from DateTimeField inpu
  • Spyder 如何在同一线程的后台运行 asyncio 事件循环(或者确实如此?)

    我已经研究 asyncio 模块 功能几天了 因为我想将它用于我的应用程序的 IO 绑定部分 并且我认为我现在对它的工作原理有一个合理的理解 或者在至少我认为我已经理解了以下内容 任一时刻 任一线程中只能运行一个异步事件循环 一旦一切都设置
  • 从另一个 python 脚本获取返回信息

    我在 Linux 上 我有一个 python 脚本 我想从另一个 python 脚本调用它 我不想将其作为模块导入 为了一层安全性 现在为了学术练习 因为我想弄清楚这一点 我实际上想让一个脚本使用 os system 或另一个类似的函数 并
  • 在 Python 的 Textmate 中突出显示尾随空格?

    我想做类似的事情this http remysharp com 2008 03 30 trailing white space in textmate Textmate 提示 这样当我在 Python 中编写代码时 尾随空白总是以某种方式突
  • 在Python中从日期时间中减去秒

    我有一个 int 变量 它实际上是秒 让我们调用这个秒数X 我需要得到当前日期和时间 以日期时间格式 减去的结果X秒 Example If X是 65 当前日期是2014 06 03 15 45 00 那么我需要得到结果2014 06 03
  • 为什么用字符串和时间增量转置 DataFrame 会转换数据类型?

    这种行为对我来说似乎很奇怪 id列 字符串 在转置后转换为时间戳df如果另一列是时间增量 import pandas as pd df pd DataFrame id 00115 01222 32333 val 12 14 170 df v

随机推荐

  • 无需更改 .NET 中的代码即可启用 TLS 1.2

    我有 NET 4 5 2 应用程序正在使用SmtpClient发送电子邮件 该应用程序安装在Windows 2012 R2服务器上 当我禁用 TLS 1 和 TLS 1 1 并仅启用 TLS 1 2 时 应用程序停止发送邮件 我认为这是因为
  • Android ViewPager 页面片段之间的填充/边距

    Android Market Google Music 似乎能够在包含在其中的不同片段之间存在某种间隙 ViewPager 知道这是如何做到的吗 向实际片段视图添加边距 填充不起作用 因为视图仍然需要占据屏幕的整个宽度 间隙 仅在滑动 Vi
  • 有某种方法可以禁用 Angular 2 中的一组输入吗?

    我在 md card 中有一些输入 有一种方法可以这样做
  • Bison/Yacc 语法中的无意串联

    我正在尝试 lex 和 yacc 并遇到了一个奇怪的问题 但我认为最好在详细说明问题之前向您展示我的代码 这是我的词法分析器 include
  • 如何有效地将阵列旋转±180°?

    对于 C 语言和衍生物 Python Cython 纯 C 使用最少的内存和操作将非方形 M N 数组绕其中心旋转 180 的最佳算法是什么 假设out是一个初始化的副本array M and N它们的行数和列数 我们使用从 0 到 M 1
  • Javascript 从 toLocaleDateString 解析日期以获取已知区域设置

    背景 在我的应用程序中 我想根据用户的区域设置设置日期格式 如果用户修改日期 我希望能够将其解析回 javascript Date 对象 Problem 我想知道是否可以使用 javascript 从本地格式化的字符串中解析日期 请考虑以下
  • PST 到 CSV 文件转换

    有谁知道通过命令行将 pst 转换为 csv 文件的好工具 您可以假设计算机上安装了 Outlook 吗 如果是这样 我相信它可以使用 OLE 或类似的东西进行后台脚本编写 我已经使用 Ruby 通过 Excel 完成了文件转换 这是一个P
  • 有没有办法将 SharedPreferences 存储到 SD 卡上?

    我编写了一个具有多个硬编码设置 例如 fontSize 或 targetDirectory 的应用程序 我希望能够偶尔更改这些类型的设置 SharedPreferences 似乎是解决此问题的一种方法 但我想共享此应用程序和设置 并且我的手
  • 使用参数从终端运行 Jython 脚本

    我想从命令行调用 Jython 脚本 例如 Applications Fiji app Contents MacOS ImageJ macosx headless little jython script py 我了解 Python 以及
  • GtkTreeView 由于排序而导致插入/更新性能损失

    在将许多行插入 GTK 树视图 使用 PyGTK 或修改许多行时 我遇到了性能问题 问题是模型似乎在每次更改 插入 修改 后都会被重新使用 这会导致 GUI 挂起数秒 通过注释使模型不排序model set sort column id S
  • 从 CLLocation 数组创建 GPX 文件

    我的应用程序需要使用应用程序在设备内共享 CLLocations 路由 数组 在此之前我没有使用 GPX 的经验 GPX 是最好的格式吗 如何从给定的此类 CLLocations 数组创建 GPX 文件 Objective C 中有标准的
  • 生成的 PDF 中自动换行(使用 jsPDF)?

    我正在做的是使用 jsPDF 创建我生成的图表的 PDF 但是 我不确定如何包装标题 通过使用 text 函数添加 标题的长度因图表而异 目前 我的标题已经从页面上消失了 任何帮助 将不胜感激 这是我到目前为止的代码 var doc new
  • 从 Lambda 中的 S3 通知事件获取非 ASCII 文件名

    The keyAWS S3 通知事件中表示文件名的字段已进行 URL 转义 当文件名包含空格或非 ASCII 字符时 这一点很明显 例如 我已将以下文件名上传到 S3 my file txt 收到的通知如下 Records s3 objec
  • 使用volley时如何保持进度条状态?

    当我将 AysncTask 与片段回调一起使用时 维护进度条状态很容易 但我应该如何用 volley 实现它 我不能使用 AsyncTask 因为它已经过时了 而且 volley 更好更快 任何帮助或提示将不胜感激 我正在使用谷歌的齐射来发
  • 使用空格而不是制表符进行缩进的性能影响

    我目前使用软制表符 即空格 来缩进 Ruby 代码 如果我使用硬制表符 在解释代码时会提高性能吗 我认为读取 1 个制表符比解析 4 个空格字符 尽管可以忽略不计 要快 您是否了解源代码解释所涉及的所有阶段 只有第一个 词法分析 必须处理空
  • spring data elasticsearch继承查询没有结果

    我在继承和 ElasticsearchRepository 方面遇到一些麻烦 我的代码 简短版本 实体 public abstract class father Id protected String identifier construc
  • Highchart / Highstock 如何设置单个 ohlc 或蜡烛的颜色?

    I have set up a highstock ohlc https www highcharts com stock demo ohlc with angular 2 But can not set the up and down c
  • 使用 wkhtmltopdf 或任何其他免费工具的 C# html 到 pdf 转换器 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在 C 中将 html 转换为 pdf 的完美工具是什么 我通过 stackoverflow com 找到了 wkhtmltopdf 但它
  • 更改亮度滤镜

    我尝试使用 jQuery 更改页面上某些图像的亮度过滤器 css 属性 但在控制台中收到以下错误 解析 过滤器 值时出错 声明被删除 这是我正在使用的代码 function changeBrightness myImg css filter
  • 从 Pandas Dataframe 写入格式化的二进制文件

    我已经看到了一些将 Python 中的格式化二进制文件读取到 Pandas 的方法 也就是说 我使用的代码使用 NumPy fromfile 进行读取 该文件使用 dtype 给定的结构进行格式化 import numpy as np im