You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas读写Parquet文件报错:类型转换失败,需逐个处理列?

解决Parquet读写时的ArrowTypeError问题

错误原因

报错指向gtis_per_league列——这列是object类型,但内部混合了**字节(bytes)和整数(int)**两种数据类型,pyarrow在序列化Parquet文件时无法统一该列的类型,因此抛出转换错误。

不需要处理所有列,只修复出问题的列即可

步骤1:确认列内的数据类型分布

先运行以下代码,明确该列具体包含哪些数据类型:

print(file['gtis_per_league'].apply(type).value_counts())

步骤2:统一该列的数据类型

根据业务需求选择一种方案:

  • 方案1:将整数转为字节类型(如果业务需要保留字节格式)
def int_to_bytes(val):
    if isinstance(val, int):
        return str(val).encode('utf-8')
    return val

file['gtis_per_league'] = file['gtis_per_league'].apply(int_to_bytes)
  • 方案2:将字节转为整数类型(如果字节是数字的编码形式)
def bytes_to_int(val):
    if isinstance(val, bytes):
        return int(val.decode('utf-8'))
    return val

file['gtis_per_league'] = file['gtis_per_league'].apply(bytes_to_int)
  • 方案3:统一转为字符串类型(快速解决,适合对格式要求不高的场景)
file['gtis_per_league'] = file['gtis_per_league'].astype(str)

步骤3:重新写入Parquet文件

处理完该列后,直接执行原写入代码即可:

file.to_parquet("/Users/hazout/mysuer/output.parquet")

内容的提问来源于stack exchange,提问作者Nathan H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 16:13:14