如何将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
相关产品推荐
相关产品推荐

