使用 vaex.from_csv 将 csv 转换为 hdf5 错误:“DataFrameArrays”对象没有属性“dtype”

问题描述

我有一个超过 1300 万行的 csv 文件,我想转换为 hdf5: 我可以运行代码

df_chunk = vx.from_csv(r'df.csv',nrows=20_000_000)

但是如果我运行以下代码

df_chunk.export(r'df.hdf5')

我有错误

AttributeError: 'DataFrameArrays' object has no attribute 'dtype'

运行时发生同样的错误

df_chunk = vx.from_csv(r'df.csv',convert='True',nrows=20_000_000)

你能告诉我出了什么问题或者我如何解决这个问题。谢谢

解决方法

我尝试将python版本降级到3.7,重新安装新版本的Vaex(4.0),然后运行代码,一切正常。 感谢您对我的关注和帮助。

,

错误消息 (object has no attribute 'dtype') 很有趣。 dtype 是 NumPy 的东西(它描述了 NumPy 数组的数据类型)。也许这是一个线索。

我不熟悉 vaex,所以我阅读了他们的文档。 :-)

我注意到您没有使用 seperator 参数(注意拼写来自文档)。如果您的值确实以逗号分隔,则需要 seperator=","

如果这不起作用,这可能会有所帮助。 vaex 4.0.0-dev0 文档显示了读取 CSV 文件和创建 HDF5 文件的其他方法。你试过vx.from_ascii()吗?文档显示了这种方法:

ds = vx.from_ascii("table.csv",seperator=",",names=["x","y","z"])

添加 names= 参数可能有助于 dtype 消息(如果正在使用复合数组)。使用该示例,这可能有效(您必须在列表中创建名称:

df_chunk = vx.from_ascii('df.csv',names=[--add your column names here--],nrows=20_000_000)  
df_chunk.export('df.hdf5')

注意:我从文件名字符串中删除了 r('df.csv' 而不是 r'df.csv')。不确定这对本案是否重要。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...