我有一个dask框架,我试图转换为Parquet文件。这个框架有列是numpy数组,但列类型是“对象”。
当我尝试这样做时:
name_function = lambda x: f"data-{x}.parquet"
data_frame[['numpy_array_col1','numpy_array_col2']].to_parquet('train/',name_function=name_function)
字符串
我得到这个错误:
ArrowTypeError: ("Expected bytes, got a 'numpy.ndarray' object", 'Conversion failed for column INPUT with type object')
During handling of the above exception, another exception occurred:
# Other errors
Can only convert 1-dimensional array values
型
我试着使用CSV的,它的工作,但我知道它更好地使用Parquet文件,我不知道如果阅读CSV的将提高逻辑或语法错误,因为模糊的列类型。
data_frame[['numpy_array_col1','numpy_array_col2']].to_csv('train/train-*.csv')
型
更新:当阅读csv文件时,numpy数组变成了string类型,所以我必须将它们转换回numpy数组。
我也试
df.to_parquet('somefile', engine='pyarrow')
型
同样的事情发生
1条答案
按热度按时间vcudknz31#
我尝试了这个解决方法。首先,你将dask的数组中的所有numpy数组扁平化。然后,你用pyArrow的列表数据表写入parquet文件,指定一个模式。最后,你可以读取文件,但你必须将所有以前的数组重塑为它们的原始形状。
我希望有另一个更简单的解决方案。