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

使用pyarrow将JSON写入parquet文件时触发Pandas ValueError如何解决

报错原因

该报错和pyarrow无关,是pandas构造DataFrame时触发的逻辑校验错误。
你通过json.loads(user_json)得到的是单组键值对结构的字典,所有value都是单个字符串标量,pandas的DataFrame.from_dict()方法默认将字典的key作为列名、value作为列值,当所有value都是单个标量时,pandas无法推断行索引,因此要求必须显式传入index参数,否则就会抛出该错误。

解决方法

最简便的修改方案是把加载得到的单条字典包裹到列表中,pandas会自动识别为单条数据,自动生成行索引,无需修改其余逻辑:
将原来的

df = pd.DataFrame.from_dict(json.loads(user_json))

修改为

df = pd.DataFrame.from_dict([json.loads(user_json)])

修改后可正常运行的完整代码

import pyarrow
import pyarrow.parquet as pq
import pandas as pd
import json

parquet_schema = pyarrow.schema(
    [('id', pyarrow.string()),
     ('firstname', pyarrow.string()),
     ('lastname', pyarrow.string())])

user_json = '{"id" : "id1", "firstname": "John", "lastname":"Doe"}'

writer = pq.ParquetWriter('user.parquet', schema=parquet_schema)
df = pd.DataFrame.from_dict([json.loads(user_json)])
table = pyarrow.Table.from_pandas(df)
print(table.schema)
writer.write_table(table)
writer.close()

你也可以选择显式传入index参数实现相同效果,例如:

df = pd.DataFrame.from_dict(json.loads(user_json), index=[0])

内容的提问来源于stack exchange,提问作者danny.lesnik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:06:04