Python读取CSV转NumPy数组报could not convert string to float错误如何解决
问题解决方案
根因分析
你使用csv.reader读取文件时指定的分隔符为;(分号),但当前CSV文件的实际字段分隔符为,(逗号),导致每行数据没有被拆分为独立字段,每个子列表仅包含1个拼接了所有数值的长字符串,因此无法直接转换为float类型。
修复方案
方案一:修正读取参数(推荐)
在读取文件阶段直接修改分隔符配置,后续转换数组无需额外处理:
import csv import numpy as np with open('sample_data/california_housing_train.csv', 'r') as f: next(f) # 将分隔符从;替换为, housing = list(csv.reader(f, delimiter=',')) # 直接转换为float类型数组 wines = np.array(housing, dtype=np.float64)
方案二:处理已有列表数据
如果已经生成了原始的housing列表不想重新读取文件,可手动拆分每个长字符串后转换类型:
import numpy as np processed_housing = [] for item in housing: # 拆分长字符串为单个数值字符串后转float split_row = [float(num) for num in item[0].split(',')] processed_housing.append(split_row) wines = np.array(processed_housing, dtype=np.float64)
两种方法执行后,wines即为符合要求的浮点型numpy数组。
内容的提问来源于stack exchange,提问作者Omar Douiba
相关产品推荐
相关产品推荐

