2016-03-14 85 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