2016-03-14 82 views
-1

我有一個兩列的數據,如下所示。我試圖估計第一列的每個值的第二列的標準偏差。因此284,285和286的值應該有其連續的標準偏差值。迭代總和和平均值

284 4 
284 9 
284 6 
285 0 
285 1 
285 3 
286 9 
286 3 
286 1 

我設法計算運行總和,但卡在平均值計算。這是我到目前爲止的代碼:

b = [(line.split("\t")) for line in data] 
sums = [(sum(float(v) for k, v in g)) for k, g in groupby(b, key=itemgetter(0))] 

lens = [(len(float(v) for k, v in g)) for k, g in groupby(b, key=itemgetter(0))] 

sums工作正常,並計算出每首列的每個變化的總和,但是len()不與信息工作和崩潰:

TypeError: object of type 'generator' has no len() 

有沒有人遇到這個之前?

+1

你試過搜索*確切的錯誤消息*嗎? – jonrsharpe

回答

3

的錯誤是在這部分代碼:

len(float(v) for k, v in g) 

這相當於:

len(g) 

發電機將錯誤指的是您的括號內做列表理解。如果你真的想執行你所寫的操作(我認爲你沒有這樣做),代碼將需要:

len([float(v) for k, v in g]) 
+1

這是一個重複的問題,不需要答案,因爲現有的答案已經很好。 :) – gsamaras