关于ZAKER 融媒体解决方案 合作 加入

python – ValueError:无法将字符串转换为 fl.

CocoaChina 09-16

我正在运行以下python脚本:

#!/usr/bin/pythonimport os,sysfrom scipy import statsimport numpy as npf=open ( 'data2.txt', 'r' ) .readlines ( ) N=len ( f ) -1for i in range ( 0,N ) : w=f [ i ] .split ( ) l1=w [ 1:8 ] l2=w [ 8:15 ] list1= [ float ( x ) for x in l1 ] list2= [ float ( x ) for x in l2 ] result=stats.ttest_ind ( list1,list2 ) print result [ 1 ]

但是我得到的错误如下:

ValueError: could not convert string to float: id

我很困惑 .

当我在交互式部分中只尝试一行时 , 而不是使用脚本循环:

>>> from scipy import stats>>> import numpy as np>>> f=open ( 'data2.txt','r' ) .readlines ( ) >>> w=f [ 1 ] .split ( ) >>> l1=w [ 1:8 ] >>> l2=w [ 8:15 ] >>> list1= [ float ( x ) for x in l1 ] >>> list1 [ 5.3209183842, 4.6422726719, 4.3788135547, 5.9299061614, 5.9331108706, 5.0287087832, 4.57... ]

我运作良好 .

任何人都可以解释一下这个吗?

谢谢

最佳答案

显然你的一些行没有有效的浮点数据 , 特别是某些行有文本 ID, 无法转换为 float.

当您在交互式提示中尝试它时 , 您只尝试第一行 , 因此最好的方法是打印出现此错误的行 , 您将知道错误的行 , 例如

#!/usr/bin/pythonimport os,sysfrom scipy import statsimport numpy as npf=open ( 'data2.txt', 'r' ) .readlines ( ) N=len ( f ) -1for i in range ( 0,N ) : w=f [ i ] .split ( ) l1=w [ 1:8 ] l2=w [ 8:15 ] try: list1= [ float ( x ) for x in l1 ] list2= [ float ( x ) for x in l2 ] except ValueError,e: print "error",e,"on line",i result=stats.ttest_ind ( list1,list2 ) print result [ 1 ]

以上内容由"CocoaChina"上传发布 查看原文
相关标签 numpy

觉得文章不错,微信扫描分享好友

扫码分享