使用pyarrow读取parquet文件转pandas时出现labels参数错误如何解决
错误原因
你的环境中pandas版本≥1.0,同时pyarrow版本过低:pandas从1.0版本开始将MultiIndex构造方法的labels参数废弃,替换为codes参数,但旧版pyarrow在执行to_pandas()转换时仍然调用带labels参数的接口,因此触发参数不匹配的类型错误。
解决方案
方案1:升级pyarrow(推荐)
升级pyarrow到最新稳定版,直接适配高版本pandas的接口,升级后原有代码无需修改即可正常运行:
# pip 升级 pip install --upgrade pyarrow # conda 升级 conda update pyarrow
方案2:降级pandas(仅适用于环境兼容要求高的场景)
如果现有环境的其他依赖不允许升级pyarrow,可以将pandas降级到0.25.x版本,该版本仍支持labels参数:
pip install pandas==0.25.3
方案3:手动构造DataFrame(无需修改依赖版本)
如果不想调整现有依赖版本,可以避开pyarrow自带的转换逻辑,手动从pyarrow表构造pandas DataFrame:
import pandas as pd import pyarrow.parquet as pq parquet_file = pq.read_table('/biomedja01/disk1/software/GTEX/GTEx_Analysis_2017-06-05_v8_RNASeQCv1.1.9_exon_reads.parquet') # 手动读取列名和对应数据构造DataFrame col_names = [field.name for field in parquet_file.schema] df = pd.DataFrame({ col: parquet_file.column(col).to_pandas() for col in col_names })
注意事项
该parquet文件未压缩大小超过11GB,转换为pandas DataFrame时请确保机器可用内存≥16GB,避免内存不足导致进程被终止。
内容的提问来源于stack exchange,提问作者moth
相关产品推荐
相关产品推荐

