如何删除Hugging Face数据集answer列含None或空字符串的行?
清理Hugging Face数据集中answer列空值行的方法
在加载好训练子集dataset_split后,直接使用Hugging Face Dataset自带的filter方法就能快速删除answer列是None或空字符串的行,具体实现有两种方式:
方式一:自定义过滤函数
适合逻辑复杂的场景,可读性更强:
# 定义过滤规则:保留answer不为None且非空(含去除全空格情况)的行 def keep_valid_answers(example): ans = example['answer'] return ans is not None and ans.strip() != "" # 应用过滤得到清理后的数据集 clean_train_dataset = dataset_split.filter(keep_valid_answers)
方式二:Lambda表达式
适合简单逻辑,代码更简洁:
# 一行完成过滤 clean_train_dataset = dataset_split.filter(lambda x: x['answer'] is not None and x['answer'].strip() != "")
可选验证步骤
可以对比过滤前后的数据集行数,确认清理效果:
print(f"原训练集行数:{len(dataset_split)}") print(f"清理后训练集行数:{len(clean_train_dataset)}")
注:如果不需要处理全空格的空值,把
strip()去掉即可,只判断x['answer'] != ""。
内容的提问来源于stack exchange,提问作者Hoo
相关产品推荐
相关产品推荐

