Python 如何将csv文件的第二列转换为浮动列表?

Python 如何将csv文件的第二列转换为浮动列表?,python,python-2.7,csv,numpy,pandas,Python,Python 2.7,Csv,Numpy,Pandas,我有这样的csv文件: string, 3.54545,4.3434,3.34435543 string, 4.54545,67.3434,5.34435543 ... stringN, 5.54545,1.3434,9.34435543 list1 = [string,string,...,string] list2 = [3.54545,4.54545,..,5.54545] 如何使用csv模块提取两个不同列表中的FirstString和second ColumnFloat?例如,我希望

我有这样的csv文件:

string, 3.54545,4.3434,3.34435543
string, 4.54545,67.3434,5.34435543
...
stringN, 5.54545,1.3434,9.34435543
list1 = [string,string,...,string]
list2 = [3.54545,4.54545,..,5.54545]
如何使用csv模块提取两个不同列表中的FirstString和second ColumnFloat?例如,我希望得到如下内容:

string, 3.54545,4.3434,3.34435543
string, 4.54545,67.3434,5.34435543
...
stringN, 5.54545,1.3434,9.34435543
list1 = [string,string,...,string]
list2 = [3.54545,4.54545,..,5.54545]
其中,list1是字符串列表,list2是浮点列表。我用pandas尝试了以下方法,问题是需要花费大量时间来读取文件:

df = pd.read_csv('test_dict.csv', header = None)

list1 = df[0].values.tolist()
list2 = df[1].values.tolist()

提前谢谢你们,伙计们

如果需要前两列,可以压缩:

import  csv

with open("in.csv") as f:
    reader = csv.reader(f)
    zipped = zip(*reader)
    s, f = list(next(zipped)), list(map(float, next(zipped)))
对于python 2,请使用itertools.izip:

import  csv
from itertools import  izip

with open("in.csv") as f:
    reader = csv.reader(f)
    zipped = izip(*reader)
    s, f = list(next(zipped)), map(float, next(zipped))
    print(s, f)
 (['string', 'string', 'stringN'], [3.54545, 4.54545, 5.54545])

如果需要前两列,可以压缩:

import  csv

with open("in.csv") as f:
    reader = csv.reader(f)
    zipped = zip(*reader)
    s, f = list(next(zipped)), list(map(float, next(zipped)))
对于python 2,请使用itertools.izip:

import  csv
from itertools import  izip

with open("in.csv") as f:
    reader = csv.reader(f)
    zipped = izip(*reader)
    s, f = list(next(zipped)), map(float, next(zipped))
    print(s, f)
 (['string', 'string', 'stringN'], [3.54545, 4.54545, 5.54545])

你可以像这样使用csv模块,但正如我在评论中所说的,不要期望它比使用熊猫更快

import csv

col1 = []
col2 = []

with open('test_dict.csv') as f:
  for row in csv.reader(f):
    col1.append(row[0])
    col2.append(row[1])

你可以像这样使用csv模块,但正如我在评论中所说的,不要期望它比使用熊猫更快

import csv

col1 = []
col2 = []

with open('test_dict.csv') as f:
  for row in csv.reader(f):
    col1.append(row[0])
    col2.append(row[1])


问题是需要花很多时间阅读文件:什么意思?谢谢@TimCastelijns的反馈。问题是,对于熊猫来说,这项任务花费了很多时间。另一个解决方案如何,例如,使用numpy reader或csv模块?Pandas是一个针对此类任务的优化库,为什么您认为使用csv模块手动执行会更快?您的文件有多大?这非常令人惊讶,因为我预计Pandas一眨眼就能阅读三千行。可能是代码中的其他部分导致了速度减慢。问题是需要花很多时间阅读文件:你是什么意思?谢谢@TimCastelijns的反馈。问题是,对于熊猫来说,这项任务花费了很多时间。另一个解决方案如何,例如,使用numpy reader或csv模块?Pandas是一个针对此类任务的优化库,为什么您认为使用csv模块手动执行会更快?您的文件有多大?这非常令人惊讶,因为我预计Pandas一眨眼就能阅读三千行。可能是代码中的其他部分导致了速度的下降。谢谢你的反馈。我得到了以下异常:文件test.py,第7行,在s中,f=listnextzipped,mapfloat,nextzipped ValueError:无法将字符串转换为float:您是否有标头,数据是否与您提供的完全相同?尝试删除映射浮动,看看是否看到任何会导致错误的值。数据中没有任何标题。数据与上述示例中提供的数据完全相同。谢谢你的支持!我已经用3000行类似的数据对它进行了测试,没有得到任何错误,尝试删除map调用,看看是否看到任何奇怪的输出。我的意思是保持nextzipped,nextzipped不完全删除!只是试着不要投,谢谢你的反馈。我得到了以下异常:文件test.py,第7行,在s中,f=listnextzipped,mapfloat,nextzipped ValueError:无法将字符串转换为float:您是否有标头,数据是否与您提供的完全相同?尝试删除映射浮动,看看是否看到任何会导致错误的值。数据中没有任何标题。数据与上述示例中提供的数据完全相同。谢谢你的支持!我已经用3000行类似的数据对它进行了测试,没有得到任何错误,尝试删除map调用,看看是否看到任何奇怪的输出。我的意思是保持nextzipped,nextzipped不完全删除!试着不要强制转换为floatDo col2是一个float或string?的列表?。谢谢你的帮助Col1是一个字符串列表,col2是一个floatsHanks列表,但我猜col2是一个字符串列表,我如何将其转换为一个floats列表?。我希望将它乘以另一个列表,这就是为什么我希望将其作为列表获取。@newWithPython,floatrow[1]Do col2是一个浮点数或字符串的列表?。谢谢你的帮助Col1是一个字符串列表,col2是一个floatsHanks列表,但我猜col2是一个字符串列表,我如何将其转换为一个floats列表?。我希望将它乘以另一个列表,这就是为什么我希望将其作为列表获取。@newWithPython,floatrow[1]