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

如何将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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 09:43:25