我已经使用 Python
polars
'
.write_parquet
方法创建了一个镶木地板文件。它可以被Python读回,没有问题,MATLAB也可以使用
读取信息
关于
parquetinfo
文件,没有问题。
但是,当我在MATLAB中运行
parquetread
实际加载时数据,它很快失败,并出现错误“无法读取 Parquet 文件”,没有进一步的详细信息。
我四处搜索,只找到 这个 Mathworks 论坛帖子 没有解决方案。
如何我可以使用 Python 创建可由 MATLAB 读取的 parquet 文件吗?
看起来你遇到了 MATLAB 中
parquetread
函数的一个已知问题。此问题似乎会影响使用
pyarrow
引擎(polars 的默认引擎)编写的某些 Parquet 文件。MATLAB 论坛帖子中提到的问题表明此问题与字典列有关,但它也可能影响其他 Parquet 文件。
以下是一些可以尝试的解决方法:
1. 在 polars 中使用
fastparquet
引擎:
fastparquet
是 polars 支持的另一种 Parquet 引擎。尝试使用
fastparquet
引擎保存你的数据帧,看看 MATLAB 是否可以读取它:
```python import polars as pl
# 保存数据帧使用 fastparquet 引擎 df.write_parquet("my_data.parquet", engine="fastparquet") ```
如果这可行,那么你可以考虑在 polars 中继续使用
fastparquet
引擎,或者看看 MATLAB 是否发布了针对此问题的修复程序。
2. 将数据转换为 pandas,然后使用
pyarrow
写入:
有些用户报告说,首先将 polars 数据帧转换为 pandas 数据帧,然后使用
pyarrow
库写入 Parquet 文件可以解决此问题:
```python import polars as pl import pandas as pd import pyarrow as pa import pyarrow.parquet as pq
# 将 polars 数据帧转换为 pandas 数据帧 pdf = df.to_pandas()
# 使用 pyarrow 将 pandas 数据帧写入 Parquet 文件 table = pa.Table.from_pandas(pdf) pq.write_table(table, 'my_data.parquet') ```
此方法涉及额外的转换步骤,但它可能与 MATLAB 的
parquetread
函数更加兼容。
3. 使用其他文件格式:
如果以上方法都不起作用,那么你可以考虑使用 MATLAB 支持的不同文件格式,例如 CSV 或 HDF5。
-
要保存为 CSV:
python df.write_csv("my_data.csv")
并在 MATLAB 中使用csvread
函数。 -
要保存为 HDF5:
python df.write_hdf("my_data.h5", key="data")
并在 MATLAB 中使用h5read
函数。
这些替代文件格式可能无法提供与 Parquet 相同的性能和存储效率,但它们可以作为一种解决方法,直到解决了 MATLAB 中的兼容性问题。
标签:python,matlab,parquet From: 78790220