Python 3.6.3报错ValueError:无法将'1.csv'转为浮点数,求原因
解决ValueError: could not convert string to float: '1.csv'问题
兄弟,这个错误的根源一眼就能看出来——你在代码里做了一个完全没必要的操作,直接把逻辑搞砸了:
错误核心原因
看这段代码:
file_name = file_n[k] + ".csv" file_name1 = float(file_name) # 这行就是出错的地方! data = np.loadtxt(file_name1,comments='%',delimiter=',',usecols=[0,1],skiprows=0)
你把拼接好的文件名(比如'1.csv')强行转换成了浮点数,但字符串'1.csv'里包含非数字字符.csv,Python根本没法把它转成float,自然就抛出了ValueError: could not convert string to float: '1.csv'。
而且更关键的是:np.loadtxt需要的第一个参数是文件名字符串,不是浮点数字!你完全不需要做这个类型转换。
修正方法
直接删掉那行多余的类型转换,用原始的文件名字符串传入np.loadtxt就行:
for k in range(np.size(file_n)):#range(1):# file_name = file_n[k] + ".csv" # 删掉 file_name1 = float(file_name) 这行 data = np.loadtxt(file_name, comments='%', delimiter=',', usecols=[0,1], skiprows=0) time0 = data[:,0] volt0 = data[:,1] n_int = 10.#+ np.abs(k-15) # 另外注意:下面的t0和V0应该是time0和volt0,你这里写错变量名了! t_size = np.array(np.size(time0)/n_int, dtype=int)-1 t = np.zeros(t_size) V = np.zeros(t_size) for j in range(t_size): t[j] = np.sum(time0[j*n_int:(j+1)*n_int-1])/n_int V[j] = np.sum(volt0[j*n_int:(j+1)*n_int-1])/n_int
另外顺便提醒一下:你后面循环里用的t0和V0其实应该是前面定义的time0和volt0,这是个变量名笔误,不修正的话后面还会报NameError,一起改了更稳妥。
内容的提问来源于stack exchange,提问作者Benjamin
相关产品推荐
相关产品推荐

