【问题标题】:Unable to convert dataframe to parquet, TypeError无法将数据框转换为镶木地板,TypeError
【发布时间】:2020-10-15 02:48:37
【问题描述】:

我试图将数据框转换为镶木地板文件。但是我遇到了以下错误。

result = pa.array(col, type=type_, from_pandas=True, safe=safe)
  File "pyarrow\array.pxi", line 265, in pyarrow.lib.array
  File "pyarrow\array.pxi", line 80, in pyarrow.lib._ndarray_to_array
  File "pyarrow\error.pxi", line 107, in pyarrow.lib.check_status
pyarrow.lib.ArrowTypeError: ('Expected a string or bytes dtype, got float64', 'Conversion failed for column NOTES with type float64')

列类型是varchar,所以它转换为str。但是该列的记录中有一些数值,我怀疑数据框将它们解析为浮点数。因此,在转换为 parquet 时,它会返回一个会产生错误的浮点值。

有没有办法将这些记录的值转换为str格式。

我尝试使用 astype(str) 但没有用。

【问题讨论】:

  • 你能澄清一下在使用 astype(str) 时究竟是什么不起作用吗?有同样的错误吗?另外,你能提供一个可重复的小例子吗?
  • 您链接到的内容实际上提到了astype(str) 作为一种解决方法。

标签: pandas pyarrow


【解决方案1】:

是的,parquet 要求每列有一个类型。要修复上述情况(即混合值类型),请将其转换为 Pandas 'string',如下所示:

df['NOTES'] = df['NOTES'].astype('string') 
# & then ... df.to_parquet(...)

【讨论】:

  • 必须是 'str' 而不是 'string',例如:df['NOTES'] = df['NOTES'].astype('str')
猜你喜欢
  • 1970-01-01
  • 2018-01-04
  • 1970-01-01
  • 2021-03-26
  • 2022-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-21
相关资源
最近更新 更多