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

使用datasets库加载JSONL文件时出现多余空字段的问题

解决datasets加载JSONL时嵌套字典自动补None的问题

你遇到的问题是因为datasets库默认会扫描整个JSONL文件,推断出统一的特征结构(schema),把所有出现过的键都纳入其中,所以第二个条目里没有的a键会被自动填充为None。以下两种方法可以解决这个问题:

方法一:加载后过滤None值

加载数据集后,通过map方法处理每个样本,过滤掉term字段中值为None的键:

from datasets import load_dataset

path = "./testdata.jsonl"
dataset = load_dataset('json', data_files=path, split='train')

def clean_term(example):
    # 过滤term中值为None的键
    example['term'] = {key: val for key, val in example['term'].items() if val is not None}
    return example

# 应用处理函数
dataset = dataset.map(clean_term)

print(dataset[1])

执行后输出就是预期的:

{'src': 'hi', 'term': {'b': 'bb'}}

方法二:使用流式加载模式

启用流式加载(streaming=True),这样库不会预先扫描文件推断统一schema,而是直接返回每个样本的原始结构:

from datasets import load_dataset

path = "./testdata.jsonl"
# 开启流式加载
dataset = load_dataset('json', data_files=path, split='train', streaming=True)

# 转换为列表访问第二个元素
dataset_list = list(dataset)
print(dataset_list[1])

这种方式下,每个样本的term会保持原始的键值对,不会自动补全缺失的键。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 19:52:40