问题描述
我有一个超过 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')。不确定这对本案是否重要。