处理转换为numpy recarray时没有值

时间:2011-08-15 18:46:02

标签: python numpy pyodbc recarray

使用对np.rec.fromrecords的单次调用,是否有一种优雅的方式来处理将元组列表转换为numpy重新排列的无值?假设我知道我想要的缺失值(例如整数为-1),我如何捕捉和处理下面的设计示例:

import numpy as np
a = [('Bob', 40, 3.14), ('Sue', 38, 6.28), ('Jim', None, 9.42)]
dtype = [('NAME', 'S10'), ('AGE', np.int32), ('SCORE', np.float64)]
try:
    b = np.rec.fromrecords(a, dtype=dtype)
except TypeError:
    # Convert None to 0 for AGE field here instead of raising the error
    raise TypeError('Caught a TypeError')

我猜我必须在每个字段的基础上执行此操作,以避免在重新排列的其他位置丢失真正的TypeErrors。是否有任何方法可以在重新排列中隔离 where (即哪些字段)我想要应用此转换。我真正的用例是将pyodbc记录转换为numpy recarrays。

1 个答案:

答案 0 :(得分:1)

使用数据库查询为NULL列值返回-1,如下所示:

SELECT COALESCE(ColumnName, -1) FROM Schema.Table;

对于NULL的ColumnName值,这将返回-1,否则返回实际值。如果需要,可以提供COALESCE here的文档。这允许您仅为所需的列提供NULL替换值,并且不会屏蔽您应该关注的TypeError异常。