如何将TSV文件中sequences列以np.float64类型导入Pandas?
解决TSV文件中sequences列导入为np.float64类型的问题
错误原因
你的sequences列存储的是字符串格式的嵌套列表,直接通过dtype=np.float64全局指定类型时,pandas会尝试将整个字符串转换为float,这显然无法完成,因此抛出ValueError。
解决步骤
先正常读取TSV文件
不指定全局dtype,先把数据读入DataFrame:import pandas as pd import numpy as np import ast df = pd.read_csv('AARS.tsv', sep='\t')解析字符串并转换为np.float64类型数组
使用ast.literal_eval将字符串格式的列表转换为Python原生列表,再转为指定dtype=np.float64的numpy数组:df['sequences'] = df['sequences'].apply(lambda x: np.array(ast.literal_eval(x), dtype=np.float64))可选:异常处理(避免格式错误导致崩溃)
如果文件中存在格式不规范的sequences值,可以添加异常处理逻辑:def parse_sequence(s): try: lst = ast.literal_eval(s) return np.array(lst, dtype=np.float64) except (SyntaxError, ValueError): return np.nan # 用NaN标记无效数据,也可根据需求替换为其他值 df['sequences'] = df['sequences'].apply(parse_sequence)
验证结果
执行完上述步骤后,可通过以下代码确认类型是否正确:
# 查看第一个元素的数据类型 print(df['sequences'].iloc[0].dtype) # 输出应为float64
内容的提问来源于stack exchange,提问作者Jichen Wen
相关产品推荐
相关产品推荐

