在转换为 numpy 重新数组时处理 None 值

发布于 2024-11-29 20:01:34 字数 596 浏览 1 评论 0原文

在使用对 np.rec.fromrecords 的单次调用将元组列表转换为 numpy 记录数组时,是否有一种优雅的方式来处理 None 值?假设我知道我想要的缺失值是什么(例如整数为 -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')

我猜我必须在每个字段的基础上执行此操作,以便避免在重新数组中的其他地方丢失真正的类型错误。有没有什么方法可以隔离我希望应用此转换的记录中的位置(即哪些字段)。我的真实用例是将 pyodbc 记录转换为 numpy 记录。

Is there a graceful way of handling None values in a conversion of a list of tuples to a numpy recarray using the single call to np.rec.fromrecords? Assuming I know what I want the missing value to be (e.g. -1 for integers), how do I catch and handle the below contrived example:

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')

I'm guessing that I would have to do this on a per-field basis in order to avoid missing true TypeErrors elsewhere in the recarray. Is there any way of isolating where (ie. what fields) in the recarray I want this conversion to apply. My real use case is converting pyodbc records to numpy recarrays.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦一生花开无言 2024-12-06 20:01:34

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

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

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

Return -1 for the NULL column values using the database query, something like this:

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

This will return -1 for ColumnName values that are NULL, otherwise the actual value is returned. Documentation for COALESCE here if needed. This allows you to provide a NULL replacement value only for the columns you require, and will not mask TypeError exceptions that you should care about.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文