向Hugging Face Hub推送数据集时遇Arrow相关错误求助
解决ArrowNotImplementedError: Unhandled type for Arrow to Parquet schema conversion: string
排查与解决步骤:
检查DataFrame列类型
直接运行df.dtypes查看各列类型。如果字符串列显示为Pandas的扩展stringdtype(而非标准objectdtype),这大概率是问题根源——pickle加载的数据集可能保留了这种扩展类型,而Hugging Face Dataset的Arrow转Parquet逻辑对其支持不完善。强制转换为兼容类型
将所有字符串列转换为Python原生字符串类型:
# 替换成你实际的字符串列名 string_columns = ["col1", "col2", "col3", "col4"] df[string_columns] = df[string_columns].astype(str) # 或者批量处理所有字符串相关列 df = df.apply(lambda col: col.astype(str) if col.dtype in ("object", "string") else col)
- 开启自动类型转换
调用Dataset.from_pandas时加上convert_types=True参数,让Dataset自动完成Pandas到Arrow兼容类型的转换:
from datasets import Dataset dataset = Dataset.from_pandas(df, convert_types=True) dataset.push_to_hub("username/my_dataset", private=True)
- 验证转换结果
转换后运行dataset.info.features确认列类型:字符串列应显示为Value(dtype='string'),整数列对应Value(dtype='int64'),确保所有类型都符合Arrow的Parquet转换要求。
内容的提问来源于stack exchange,提问作者oettam_oisolliv
相关产品推荐
相关产品推荐

