出力エラー:TypeError:strではなく実数である必要があります



Output Error Typeerror



出力エラー:TypeError:strではなく実数である必要があります

An error is displayed while running the following code: fo = open(outName,'w') head1 = 'diamond 3 '+date+hour+dataInfo+' ' head2 = yy+' '+month+' '+day+' '+hour+' 9999 0 1 0 0 1 '+str(dims[0])+' ' fo.write(head1) fo.write(head2) k = 1 for i in range(dims[0]): stemp = '%d %.2f %.2f 9999 %.2f' %(k,lon[i],lat[i],data[i]) k = k+1 fo.write(stemp+' ') fo.close()

表示エラー:TypeError:strではなく実数である必要があります。これはlonとlatがstrタイプであるためですが、%f形式で出力されるため、lonとlatのコードは次のようになります。



with open(pathin+filename[i]) as f: reader = csv.reader(f) header_row = next(reader) lon=[]lat=[]val=[] for row in reader: lon.append(row[1]) lat.append(row[2]) val.append(row[3])

ここで、openでcsvファイルを直接開き、そこからいくつかの列を抽出します。この方法で読み取られるlonとlatはstrタイプであり、pandasまたはnumpyを使用して読み取る場合は直接intまたはfloatであることに注意してください。

問題を見つけたら、lonとlatをfloat型に変換します。 OK〜



with open(pathin+filename[i]) as f: reader = csv.reader(f) header_row = next(reader) lon=[]lat=[]val=[] for row in reader: **lon.append(float(row[1])) lat.append(float(row[2]))** val.append(row[3]) i = i+1