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

如何将CSV文件列保存为Python变量?MATLAB转Python新手求助

提取CSV指定列(跳过表头)的正确写法

你的代码存在几个问题:

  • 未跳过首行表头,导致结果中混入表头字符串
  • 在循环内每次打印列表,随着元素不断追加,输出看起来像“三角矩阵”
  • 列索引对应错误:CSV列索引从0开始,你原代码中取column[1]对应的是表头里的salinity,而非depth

修正后的原生csv模块写法(基于你的代码修改)

salinity1 = []
depth1 = []
pressure1 = []  # 表头无temperature,修正变量名
import csv

with open('ctd11.csv') as file:
    reader = csv.reader(file)
    next(reader)  # 跳过首行表头
    ctd1row = list(reader)  # 直接读取所有数据行
    
    for row in ctd1row:
        # 转换为数值类型(原csv读取的是字符串)
        depth1.append(float(row[0]))    # depth对应第0列
        salinity1.append(float(row[1])) # salinity对应第1列
        pressure1.append(float(row[2])) # pressure对应第2列

# 统一在循环外打印结果
print(depth1)

更简洁的原生写法(无需先存储所有行)

salinity1 = []
depth1 = []
pressure1 = []
import csv

with open('ctd11.csv') as file:
    reader = csv.reader(file)
    next(reader)  # 跳过表头
    
    for row in reader:
        depth1.append(float(row[0]))
        salinity1.append(float(row[1]))
        pressure1.append(float(row[2]))

print(depth1)

推荐:用pandas处理(更贴近MATLAB的表格操作逻辑)

对于从MATLAB转Python的用户,pandas的使用体验和MATLAB的readtable类似,处理CSV效率更高:

import pandas as pd

# 自动读取表头,加载数据为DataFrame
df = pd.read_csv('ctd11.csv')

# 提取指定列转为列表(也可直接使用df['depth']这类列对象)
depth1 = df['depth'].tolist()
salinity1 = df['salinity'].tolist()
pressure1 = df['pressure'].tolist()

print(depth1)

内容的提问来源于stack exchange,提问作者audrey131313

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:41:04