我有两列数据,如下所示。我试图估计第一列的每个值的第二列的标准偏差。因此,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()
以前有人遇到过这个问题吗?
答案 0 :(得分:3)
错误出现在代码的这一部分:
len(float(v) for k, v in g)
这相当于:
len(g)
错误所指的生成器是您在括号内执行的列表解析。如果您真的想要执行您编写的操作(我认为您不会这样做),则代码必须是:
len([float(v) for k, v in g])