我同时使用R和Python,并且想将其中一个 Pandas DataFrame编写为 Feather ,以便可以在R中更轻松地使用它。但是,当我尝试将其编写为 Feather 时,出现以下错误:
ArrowInvalid: trying to convert NumPy type float64 but got float32
我仔细检查了我的列类型,它们已经是浮点型64了:
In[1]
df.dtypes
Out[1]
id Object
cluster int64
vector_x float64
vector_y float64
无论使用
feather.write_dataframe(df, "path/df.feather")
还是df.to_feather("path/df.feather")
,我都会遇到相同的错误。我在GitHub上看到了这个,但不知道它是否相关:https://issues.apache.org/jira/browse/ARROW-1345和https://github.com/apache/arrow/issues/1430
最后,我可以将其另存为csv并更改R中的列(或仅使用Python进行整个分析),但是我希望使用它。
编辑1:
尽管下面提供了很好的建议,但仍然存在相同的问题,因此请更新我的尝试。
df[['vector_x', 'vector_y', 'cluster']] = df[['vector_x', 'vector_y', 'cluster']].astype(float)
df[['doc_id', 'text']] = df[['doc_id', 'text']].astype(str)
df[['doc_vector', 'doc_vectors_2d']] = df[['doc_vector', 'doc_vectors_2d']].astype(list)
df.dtypes
Out[1]:
doc_id object
text object
doc_vector object
cluster float64
doc_vectors_2d object
vector_x float64
vector_y float64
dtype: object
编辑2:
经过大量搜索之后,看来问题出在我的集群列是由int64整数组成的列表类型。所以我想真正的任务是, Feather 格式支持列表吗?
编辑3:
仅仅为了证明这一点,father还不支持嵌套数据类型(例如列表),至少现在还不支持。
最佳答案
解决方案:
pip install pyarrow==latest # my version is 1.0.0 and it work
然后,仍然使用pd.to_feather(“Filename”)和read_feather。关于python - 尝试将DataFrame写入Feather时出错。 Feather 支持列表列吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54354983/