首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >NumPy或Pandas:在具有NaN值的情况下保持数组类型为整数

NumPy或Pandas:在具有NaN值的情况下保持数组类型为整数
EN

Stack Overflow用户
提问于 2012-07-19 02:30:03
回答 9查看 83.6K关注 0票数 190

有没有一种更好的方法来保持numpy数组的数据类型固定为int (或int64或其他任何类型),同时内部仍有一个元素列为numpy.NaN

特别是,我正在将内部数据结构转换为Pandas DataFrame。在我们的结构中,我们有整数类型的列,它们仍然有NaN(但是列的dtype是int)。如果我们把它变成一个DataFrame,它看起来会把所有的东西都转换成一个浮点型,但我们真的很想成为int

有什么想法?

尝试过的

我尝试在pandas.DataFrame下使用coerce_float=False下的from_records()函数,但没有帮助。我还尝试在NaN fill_value中使用NumPy掩码数组,这也不起作用。所有这些都会导致列数据类型变为浮点型。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2018-08-24 11:36:21

此功能已添加到pandas (从0.24版开始):https://pandas.pydata.org/pandas-docs/version/0.24/whatsnew/v0.24.0.html#optional-integer-na-support

此时,它需要使用扩展数据类型Int64 (大写),而不是默认的数据类型int64 (小写)。

票数 98
EN

Stack Overflow用户

发布于 2012-07-19 02:43:28

NaN不能存储在整数数组中。这是目前已知的熊猫的局限性;我一直在等待NumPy中的nA值的进展(类似于R中的NAs ),但NumPy似乎至少需要6个月到一年的时间才能获得这些功能:

http://pandas.pydata.org/pandas-docs/stable/gotchas.html#support-for-integer-na

(此功能是从pandas的0.24版本开始添加的,但请注意,它需要使用扩展数据类型Int64 (大写),而不是默认的数据类型int64 (小写):https://pandas.pydata.org/pandas-docs/version/0.24/whatsnew/v0.24.0.html#optional-integer-na-support )

票数 110
EN

Stack Overflow用户

发布于 2014-12-09 07:41:00

如果性能不是主要问题,您可以改为存储字符串。

df.col = df.col.dropna().apply(lambda x: str(int(x)) )

然后你就可以随心所欲地使用NaN了。如果您确实想要整数,可以使用-101234567890或其他一些专用值来表示NaN,具体取决于应用程序。

您还可以临时复制列:一个是浮点型的,另一个是实验性的,是整型或字符串。然后在每个合理的位置插入asserts,检查两者是否同步。经过足够的测试后,你就可以放手了。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11548005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档