首页 > 解决方案 > 由于错误“不支持具有多个孩子的文件”而无法将文件另存为镶木地板?

问题描述

我使用 python 安装了 pyarrow 的 anaconda 发行版。起初,我有一个 166 列的数据集,在我对数据的第一次迭代中,我不得不将很多东西分解为虚拟变量,所以它增加到 915 列,在细化阶段,我不得不对一些数据进行 bin 处理,因此,增长到 1880 列。

由于 915 我无法将文件保存为 HDF,所以我进入了镶木地板,然后在最后一个阶段镶木地板在我身上失败了ArrowNotImplementedError: Fields with more than one child are not supported.

幸运的是,我能够将它写为 CSV,但这在我的驱动器中占用了近 3gb 的空间我想知道这个错误的含义。列是如此简单,它们要么是类别,要么是二进制(数字)。我有一些缺失值,但我ḿ 使用 XGBOOST 进行训练,所以那里没有问题。

有谁知道为什么突然增加列实木复合地板的数量无法保存我的文件?我已经毫无问题地完成了 describe()、info() 和许多其他操作,我什至在不保存数据的情况下训练了 xgboost 模型,但聚合所有这些列需要很长时间。

data.to_parquet("../data/5_all_data.parquet") => 没用

ArrowNotImplementedError: Fields with more than one child are not supported.

data.to_hdf("../data/5_all_data.h5", key="data") => 没用

NotImplementedError: Cannot store a category dtype in a HDF5 dataset that uses format="fixed". Use format="table".

data.to_csv("../data/5_all_data.csv") => 确实有效

数据信息()

<class 'pandas.core.frame.DataFrame'>
Int64Index: 605847 entries, 630776 to 1049122
Data columns (total 1880 columns):

dtypes: category(118), float64(88), int64(38), uint8(1636)
memory usage: 1.6 GB

请有任何帮助

标签: pythonpandasparquethdf

解决方案


问题是错误消息在这里没有帮助。在我的情况下,真正的问题是有 2 列具有完全相同的名称。在上下更改版本并更改列类型和一堆其他东西之后,我所要做的就是重命名列,我可以保存到包的任何版本中的镶木地板中。


推荐阅读