尝试使用pandas读取parquet文件会引发“Cannot yet unify dictionaries with nulls”错误

xkrw2x1b  于 2023-10-14  发布在  其他
关注(0)|答案(1)|浏览(91)

我正在尝试读取分区的Parquet文件使用:

df = pd.read_parquet(basepath_to_files)

然而,这会引起错误:ArrowInvalid: Cannot yet unify dictionaries with nulls
从单个(未分区).parquet文件中阅读完全相同的数据不会引发错误。
如何加载此分区数据?

yc0p9oo0

yc0p9oo01#

依赖默认设置可能不是最好的主意,特别是因为这些设置在相对较新的版本中已经发生了变化。如果你还没有的话,一定要看看pandas docs。对null类型的引用太多,无法忽略:

*use_nullable_dtypesbool,默认为False

  • 如果为True,则使用将pd.NA用作结果DataFrame的缺失值指示符的数据类型。(仅适用于pyarrow引擎)随着将来添加支持pd.NA的新数据类型,使用此选项的输出将更改为使用这些数据类型。注意:这是一个实验性的选项,行为(例如,其他支持数据类型)可能会更改,恕不另行通知。
    *自2.0版起已弃用。
    *dtype_backend 'numpy_nullable','pyarrow'},default 'numpy_nullable'
  • 应用于结果DataFrame的后端数据类型 (仍处于试验阶段)。 行为如下:
  • “numpy_nullable”:返回nullable-dtype-backed DataFrame(默认)。
  • “pyarrow”:返回pyarrow支持的可空ArrowDtype DataFrame。
    *2.0版新增功能。

可能首先检查您的pd.__version__,看看您在这方面的位置。然后如果你是2.0以上的版本,添加参数dtype_backend = ‘pyarrow’看起来是第一件要尝试的事情。

相关问题