You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何从CSV文件拆分数据到两个列表并转换数值类型

解决CSV数据拆分与类型转换问题

嘿,刚接触Python编程的话,遇到这种CSV处理的小问题太正常了,我来帮你调整代码搞定这个需求!

问题分析

你当前的代码把整行数据都塞进firstList了,而且csv.reader默认会把所有内容读成字符串类型,所以我们需要做两个关键调整:

  1. 只保留每行的前4个元素,排除最后那个分类字符串
  2. 将这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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:12:30