使用对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。
答案 0 :(得分:1)
使用数据库查询为NULL列值返回-1,如下所示:
SELECT COALESCE(ColumnName, -1) FROM Schema.Table;
对于NULL的ColumnName值,这将返回-1,否则返回实际值。如果需要,可以提供COALESCE here的文档。这允许您仅为所需的列提供NULL替换值,并且不会屏蔽您应该关注的TypeError
异常。