Python,对从sqlite提取的浮点列表执行算术

Python,对从sqlite提取的浮点列表执行算术,python,sqlite,Python,Sqlite,我正试图将sqlite中的一些浮点值提取到一个列表中,然后对该列表进行一些计算: import itertools conn = sqlite3.connect("Rain.db") c = conn.cursor() conn.text_factory = float nn_mag = c.execute('select NeuralMagnitude from NNDATA').fetchall() conn.close() nn_mag = list(itertools.chain(*

我正试图将sqlite中的一些浮点值提取到一个列表中,然后对该列表进行一些计算:

import itertools

conn = sqlite3.connect("Rain.db")
c = conn.cursor()
conn.text_factory = float
nn_mag = c.execute('select NeuralMagnitude from NNDATA').fetchall()
conn.close()

nn_mag = list(itertools.chain(*nn_mag))[:-1]
[:-1]
的原因是元组/列表中的最后一项是
None

conn.text_factory=float确实将元组提取为浮点数,但即使将
nn_mag
转换为浮点数列表,仍然无法使用
nn_mag
执行任何算术,例如代码和错误:

totals = sum(nn_mag)
TypeError: unsupported operand type(s) for +: 'float' and 'NoneType'
我在堆栈溢出上看到的另一种方法是对列表中的浮点数求和:

totals = sum(map(float,nn_mag))
TypeError: float() argument must be a string or a number

谢谢

只需过滤掉有问题的
。如果您手动执行此操作:

total = 0
for nn in nn_mag:
    try: total += nn
    except TypeError: pass
或者,如果它实际上只是
None
单元格,则可以使用过滤器:

totals = sum(filter(lambda x: x is not None,nn_msg))

在我看来,您的数据库中有
NULL
s。你确定所有的数据都是真正的浮动吗?我从另一个程序生成的.csv加载到数据库中,有很多行,但据我所知,它们都是用x.x格式的数字填充的。好的,最后一行确实有一些空格,这就是为什么第二行工作得很好,看起来是最后一行(1570)在.csv中有一个不同的格式,我没有看到它