Python如何从CSV文件拆分数据到两个列表并转换数值类型
解决CSV数据拆分与类型转换问题
嘿,刚接触Python编程的话,遇到这种CSV处理的小问题太正常了,我来帮你调整代码搞定这个需求!
问题分析
你当前的代码把整行数据都塞进firstList了,而且csv.reader默认会把所有内容读成字符串类型,所以我们需要做两个关键调整:
- 只保留每行的前4个元素,排除最后那个分类字符串
- 将这4个字符串元素转换为浮点型数值
修改后的代码
import csv # 别忘了导入csv模块哦,你的代码里没写,得加上 firstList = [] secondList = [] with open('file.csv') as file: fileReader = csv.reader(file, delimiter=',') for row in fileReader: # 取前4个元素,逐个转成float后组成新列表加入firstList numeric_values = [float(item) for item in row[:4]] firstList.append(numeric_values) # 用row[-1]取最后一个元素加入secondList,比固定索引row[4]更灵活,列数变化也能拿到最后一列 secondList.append(row[-1])
代码细节解释
row[:4]:用切片操作获取每行的前4个元素(索引0到3),自动排除最后一个分类项float(item):把每个字符串类型的数值转成浮点型,满足你需要的数值列表要求row[-1]:负索引可以直接获取每行的最后一个元素,比固定索引row[4]更健壮,就算CSV列数有调整也能正确拿到分类值
运行后结果
执行这段代码后,你就能得到完全符合预期的结果:
firstList = [ [5.1, 3.5, 1.5, 0.2], [4.9, 3.0, 1.4, 0.2], [4.6, 3.1, 1.5, 0.2] ] secondList = ['setosa', 'setosa', 'setosa']
额外小技巧(可选)
如果想让代码更简洁,还可以用列表推导式一次性生成两个列表:
import csv with open('file.csv') as file: fileReader = csv.reader(file, delimiter=',') rows = list(fileReader) firstList = [[float(item) for item in row[:4]] for row in rows] secondList = [row[-1] for row in rows]
这种写法更紧凑,逻辑也清晰,适合熟悉列表推导式之后使用~
内容的提问来源于stack exchange,提问作者Horatiuw
相关产品推荐
相关产品推荐

