使用Pandas读取Parquet文件时将long列转为string,解决解析错误
Pandas读取Parquet文件类型转换错误解决方案
问题场景
执行以下代码读取Parquet文件时:
import pandas as pd product = pd.read_parquet('/datalake/test_usecase/products/')
触发错误:
ArrowInvalid: Failed to parse string: as a scalar of type int64.
目标列定义为long类型,但存在无法解析为int64的空字符串值,需要在读取阶段直接将该列转为string类型。
解决方法
直接通过read_parquet的dtype参数强制指定目标列的数据类型为字符串即可:
1. 指定单个列的类型
import pandas as pd # 将'column_name'替换为实际需要转换的列名 product = pd.read_parquet('/datalake/test_usecase/products/', dtype={'column_name': 'string'})
2. 批量指定多个列的类型
如果有多个列需要转换,扩展字典中的键值对即可:
product = pd.read_parquet('/datalake/test_usecase/products/', dtype={ 'target_col1': 'string', 'target_col2': 'string' })
这种方式从读取阶段就强制设置列类型,避免了类型解析失败的问题,是最直接有效的处理方式。
内容的提问来源于stack exchange,提问作者Sr4
相关产品推荐
相关产品推荐

