在 Python 中使用 Polars 读取/写入 Parquet 文件时可以指定架构吗?

Ben*_* Du 5 python schema dataframe rust python-polars

在Python中使用Polars读取CSV文件时,我们可以使用参数dtypes来指定要使用的模式(对于某些列)。我想知道我们在读取或写入 Parquet 文件时可以做同样的事情吗?我试图指定dtypes参数,但它不起作用。

我有一些从 PySpark 生成的 Parquet 文件,并且想要将这些 Parquet 文件加载到 Rust 中。Rust 需要无符号整数,而 Spark/PySpark 没有无符号整数并将有符号整数输出到 Parquet 文件中。为了让事情变得更简单,我想在将 Parquet 文件加载到 Rust 之前转换它们的列类型。我知道有几种不同的方法可以实现这一点(无论是在 pandas 还是在 Polars 中),但我想知道是否有简单有效的方法可以使用 Polars 来实现此目的。

我在 Python 中使用极坐标转换列类型的代码如下。

import polars as pl

...
df["id0"] = df.id0.cast(pl.datatypes.UInt64)
Run Code Online (Sandbox Code Playgroud)

rit*_*e46 4

Parquet 文件有一个架构。我们尊重以下模式:

  • 读取后的镶木地板文件
  • DataFrame写作时

如果您想更改读/写的模式,则需要转换DataFrame.

如果我们接受一个模式,我们就会这么做,所以效率是一样的。