我同时使用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-1345https://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/

10-09 21:49