如何从数据库数据中取平均值? TypeError: 不支持的操作数类型 /: 'Decimal' 和 'float'
Posted
技术标签:
【中文标题】如何从数据库数据中取平均值? TypeError: 不支持的操作数类型 /: \'Decimal\' 和 \'float\'【英文标题】:How to make an average from DB data? TypeError: unsupported operand type(s) for /: 'Decimal' and 'float'如何从数据库数据中取平均值? TypeError: 不支持的操作数类型 /: 'Decimal' 和 'float' 【发布时间】:2014-03-08 10:42:09 【问题描述】:我正在遍历从 mysql 数据库返回的一些数据。我无法控制数据库中的数据格式(或与数据相关的任何其他内容)。
我想创建返回值的平均值。在 Python 中打印 DB 行时的值如下所示:
('username', Decimal('8.4600'), Decimal('10.4300'), Decimal('9.48600000'), Decimal('1.9700'), 5L)
我的代码基本上就是这样的:
import numpy
#make a list in a loop from the DB data rows
avg = numpy.mean(list)
我的错误是:
TypeError: /: 'Decimal' 和 'float' 的操作数类型不受支持
显然,我需要转换类型。我更愿意将 DB Decimal 类型转换为常见的 Python 类型(例如 float)。我不是在用钱工作;这些数字适当地表示为浮点数。
处理这个问题的最佳方法是什么?
【问题讨论】:
【参考方案1】:您可以在循环期间将所有内容转换为浮点数,也可以使用列表推导来执行此操作。 float(Decimal('10.4300')) 有效。如果你可以控制你的查询,我不明白为什么你不能在那里平均它。
【讨论】:
以上是关于如何从数据库数据中取平均值? TypeError: 不支持的操作数类型 /: 'Decimal' 和 'float'的主要内容,如果未能解决你的问题,请参考以下文章