【发布时间】:2019-10-11 20:26:26
【问题描述】:
我想通过说我没有任何代码可以重现我所遇到的错误来介绍这个问题的描述。不过,我可以(希望)详细解释这个问题。
在我的工作中,我们处理大量数据,这些数据来自各种来源。其中一些来源使用 Big Endian,一些使用 Small Endian。所有这些数据都被解析并存储到一个 h5 文件中。
我开发的工具利用 Pandas 数据框以多种方式处理数据。
我们的 H5 文件的设置方式似乎不适用于 Pandas 的 df.read_h5() 函数调用(数据并不总是具有良好的结构,即使在 h5 文件中也是如此)。我们有不同的函数来处理我们遇到的从 h5 文件中提取数据的所有场景。我们的大部分数据以 numpy 结构化数组或结构化数组切片的形式存储在 h5 文件中。
基本上每当我获取数据并尝试将其放入数据框中时,Pandas 都会出现一些问题。抛出的错误是“ValueError: Big-endian buffer not supported on little-endian compiler”。我知道如何解决这个问题,只需在将底层 numpy 数组放入数据帧之前调用一个字节交换。这就是我目前处理这个问题的方式,但我想知道是否有办法将数据从 h5py 读取到机器本机字节序中,这样我就不必担心进行字节交换。
任何建议都会有所帮助。
【问题讨论】:
-
您可以使用
h5py浏览文件。这是一个较低级别的接口,产生numpy数组。它可以更好地处理结束,因为 numpy 可以有 dtype>f8或<f8。您可以从一个或多个数组创建数据框。这只是一个猜测,因为我从来没有处理过这样的文件。
标签: python pandas endianness h5py