【发布时间】:2012-07-17 21:07:13
【问题描述】:
是否有一种首选方法可以将numpy 数组的数据类型固定为int(或int64 或其他),同时仍将其中的元素列为numpy.NaN?
特别是,我正在将内部数据结构转换为 Pandas DataFrame。在我们的结构中,我们有仍然有 NaN 的整数类型列(但列的 dtype 是 int)。如果我们将其设为 DataFrame,似乎会将所有内容重铸为浮点数,但我们真的很想成为 int。
想法?
尝试过的事情:
我尝试使用 pandas.DataFrame 下的 from_records() 函数和 coerce_float=False,但这没有帮助。我还尝试使用 NumPy 掩码数组和 NaN fill_value,这也不起作用。所有这些都导致列数据类型变为浮点数。
【问题讨论】:
-
你能用一个 numpy 掩码数组吗?
-
我试试看。我还尝试了pandas.DataFrame下的
from_records函数,使用coerce_float=False,但没有运气......它仍然使新数据具有float64类型。 -
是的,没有运气。即使使用掩码数组,它仍会转换为浮点数。看起来 Pandas 是这样的:“任何地方都有 NaN 吗?......然后一切都是浮点数。”希望有办法解决这个问题。
-
pandas 0.24.0 现在正式添加了可选的可空整数支持 - 终于 :) - 请在下面找到更新的答案。 pandas 0.24.x release notes
标签: python numpy int pandas type-conversion