JSON转Pandas DataFrame出现ValueError、KeyError报错如何解决
报错原因
- 第一个
ValueError: arrays must all be same length
pd.read_json默认会将JSON顶层每个键的值展开为单独列,要求所有列长度一致。你的JSON中id是单个字符串、article是14个元素的列表、abstract是3个元素的列表,三者长度不匹配,因此触发报错。 - 第二个
KeyError: "None of ['index'] are in the columns"
你通过pd.DataFrame.from_dict(data, orient='index').T生成的DataFrame列名为id、article、abstract,不存在名为index的列,调用set_index('index')时找不到指定列,因此触发报错。
解决方法
你的JSON对应单条样本,三个字段分别为id(字符串类型)、article(句子列表类型)、abstract(摘要列表类型),只需要将读取到的JSON数据包装为列表,即可直接生成符合要求的DataFrame,再转Hugging Face Dataset即可。
完整可运行代码:
import json import pandas as pd from datasets import Dataset # 读取JSON文件 with open('100252.json', 'r', encoding='utf-8') as f: data = json.load(f) # 单条数据包装为列表后生成DataFrame df = pd.DataFrame([data]) # 转Hugging Face数据集 dataset = Dataset.from_pandas(df)
可以通过以下代码验证转换结果:
# 查看DataFrame结构 print(df.columns) print(df['id'][0]) print(len(df['article'][0])) print(len(df['abstract'][0])) # 查看数据集结构 print(dataset)
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

