使用pyArrow将pandas.DF转换为镶木地板时出现此错误:
ArrowInvalid('Error converting from Python objects to Int64: Got Python object of type str but can only handle these types: integer
为了找出哪个列是问题,我在for循环中创建了一个新的df,首先是第一列,每个循环添加另一列。我意识到错误位于dtype: object
的列中,以0开头,我猜这就是为什么pyArrow想要将列转换为int
但是因为其他值为UUID
我试图传递一个架构:(不确定这是否可行)
table = pa.Table.from_pandas(df, schema=schema, preserve_index=False)
架构为:df.dtypes
答案 0 :(得分:2)
Carlos您是否尝试将列转换为此处列出的一种pandas类型https://arrow.apache.org/docs/python/pandas.html?
你可以发布df.dtypes的输出吗?
如果更改pandas列类型没有帮助,您可以定义要传入的pyarrow模式。
fields = [
pa.field('id', pa.int64()),
pa.field('secondaryid', pa.int64()),
pa.field('date', pa.timestamp('ms')),
]
my_schema = pa.schema(fields)
table = pa.Table.from_pandas(sample_df, schema=my_schema, preserve_index=False)
此处提供更多信息:
https://arrow.apache.org/docs/python/data.html https://arrow.apache.org/docs/python/generated/pyarrow.Table.html#pyarrow.Table.from_pandas https://arrow.apache.org/docs/python/generated/pyarrow.schema.html