我正在写一个代码在python中的项目,必须完成一些事情;通过 列2从xls文件列在数据读取) 1)平均该列的每行三个 3的基团)进行平均所得到的列平均下来的平均数据列
我已经完成图1和2,但不能完全似乎为了得到3,我认为很多麻烦源于我使用浮点数的事实,但是我需要数字到6位小数。任何帮助和耐心表示赞赏,我很新的Python
v = open("Pt_2_Test_Data.xls", 'wb') #created file to write output to
w = open("test2.xls")
count = 0
for row in w: #read in file
for line in w:
columns = line.split("\t") #split up into columns
date = columns[0]
time = columns[1]
a = columns[2]
b = columns[3]
c = columns[4]
d = columns[5]
e = columns[6]
f = columns[7]
g = columns[8]
h = columns[9]
i = columns[10]
j = columns[11]
k = columns[12]
l = columns[13]
m = columns[14]
n = columns[15]
o = columns[16]
p = columns[17]
q = columns[18]
r = columns[19]
s = columns[20]
t = columns[21]
u = columns[22]
LZA = columns[23]
SZA = columns[24]
LAM = columns[25]
count += 1
A = 0
if count != 0: # gets rid of column tiles
filter1 = ((float(a) + float(b) + float(c))/3)
filter1 = ("%.6f" %A)
filter2 = (float(d) + float(e) + float(f))/3
filter2 = ("%.6f" %filter2)
filter3 = (float(g) + float(h) + float(i))/3
filter3 = ("%.6f" %filter3)
filter4 = (float(j) + float(k) + float(l))/3
filter4 = ("%.6f" %filter4)
filter5 = (float(m) + float(n) + float(o))/3
filter5 = ("%.6f" %filter5)
filter6 = (float(p) + float(q) + float(r))/3
filter6 = ("%.6f" %filter6)
filter7 = (float(s) + float(t) + float(u))/3
filter7 = ("%.6f" %filter7)
A = [filter1, filter2, filter3, filter4, filter5, filter6, filter7]
A = ",".join(str(x) for x in A).join('[]')
print A
avg = [float(sum(col))/float(len(col)) for col in zip(*A)]
print avg
我也试图格式化数据,像这样:
A = ('{0} {1} {2} {3} {4} {5} {6} {7} {8}'.format(date, time, float(filter1), float(filter2), float(filter3), float(filter4), float(filter5), float(filter6), float(filter7))+'\n') # average of triplets
print A
想我可以访问每一列的值和瓶坯通过像使用字典时那样调用它们来进行必要的数学计算,但这是不成功的:它似乎是将数据识别为一行(因此试图通过[0]访问任何列超出边界)或由个别字符,而不是数字列表。这与使用float函数有关吗?
是的!这看起来会完成我想要的!然而,我在行“print('['+','.join(['{:。6f}'] * len(A))+']')。格式(* A)'你解释了这部分代码的意义:“print('['+','.join(['::6f}'] * len(A))+']')。格式(* A)“? - 谢谢 – KJo
这只是创建格式化字符串''[{:.6f},{:.6f},{:.6f},{:.6f},{: .6f},{:.6f},{:.6f}]'',然后将它应用于列表'A'中的所有'float'值。您在线上发生了什么错误? – martineau
ValueError:零长度字段名称的格式为 – KJo