我正在运行以下Python脚本:
#!/usr/bin/python
import os,sys
from scipy import stats
import numpy as np
f=open('data2.txt', 'r').readlines()
N=len(f)-1
for 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
我对此感到困惑。 当我在交互式部分尝试仅针对一行执行此操作时,而不是使用脚本的for循环:
>>> 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...]
它运行良好。
有人能解释一下吗?谢谢。
csv
文件中读取数据帧时,若数据类型为df = df[['p']].astype({'p': float})
,可能会出现ValueError: could not convert string to float:
这种错误。如果csv
文件中存在空格,则Python将无法将空格识别为NaN。您需要使用df = df.replace(r'^\s*$', np.nan, regex=True)
将空单元格覆盖为NaN。 - Alfred Wallace