如何将CSV数据转换为Python可使用的数值向量?
问题描述
我是Python新手,若问题较为基础还请见谅。
我用以下代码导入CSV表格:
import csv with open('myCSV.csv', 'r') as csvfile: so = csv.reader(csvfile, delimiter=',', quotechar='"') so_data = [] for row in so: so_data.append(row)
执行so_data[1:][1]得到结果['1.25;10.25;1.25;5.25'],但我需要得到[1.25,10.25,1.25,5.25]格式的数值向量,作为Python函数的输入。
我也尝试过用pandas导入:
myCSV=pd.read_csv(r'myCSV.csv')
再使用myCSV.iloc[[0]]、myCSV.iloc[0].values和myCSV.to_numpy()[0],但都没得到所需格式。
我的CSV文件数据格式如下:
a;b;c;d 1.25;10.25;1.25;5.25 11.25;2.25;1.25;5.25 1.25;1.25;10.25;7.25
(注:我尝试过Excel支持的所有CSV保存格式,但仍无法得到所需向量格式。)
解决方案
方案一:使用标准库csv
问题核心是CSV分隔符匹配错误——你的文件用的是;而非,,修改参数后再将字符串转为数值即可:
import csv with open('myCSV.csv', 'r') as csvfile: # 把分隔符改为文件实际使用的; so = csv.reader(csvfile, delimiter=';', quotechar='"') so_data = [] # 跳过表头行 next(so) for row in so: # 将每行的字符串元素转为float数值 numeric_row = [float(num) for num in row] so_data.append(numeric_row) # 取原文件第二行数据(对应11.25那一行) print(so_data[1]) # 输出: [11.25, 2.25, 1.25, 5.25] # 取原文件第一行数据(对应1.25那一行) print(so_data[0]) # 输出: [1.25, 10.25, 1.25, 5.25]
方案二:使用pandas
同样需要指定分隔符为;,再提取数据转成数值列表:
import pandas as pd # 指定分隔符为;读取CSV df = pd.read_csv('myCSV.csv', delimiter=';') # 提取第一行数据转为数值列表 first_row = df.iloc[0].tolist() print(first_row) # 输出: [1.25, 10.25, 1.25, 5.25] # 提取第二行数据转为数值列表 second_row = df.iloc[1].tolist() print(second_row) # 输出: [11.25, 2.25, 1.25, 5.25]
内容的提问来源于stack exchange,提问作者anon
相关产品推荐
相关产品推荐

