python - NumPy 或 Pandas : Keeping array type as in

是否有一种首选方法可以将 numpy 数组的数据类型固定为 int (或 int64 或其他),同时仍然里面有一个元素列为 numpy.NaN?

特别是,我正在将内部数据结构转换为 Pandas DataFrame。在我们的结构中,我们有仍然有 NaN 的整数类型列(但列的 dtype 是 int)。如果我们将其设为 DataFrame,似乎会将所有内容重铸为 float ,但我们真的很想成为 int

想法?

尝试过的事情:

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

最佳答案

NaN 不能存储在整数数组中。这是目前 pandas 的一个已知限制;我一直在等待 NumPy 中的 NA 值取得进展(类似于 R 中的 NA),但 NumPy 至少需要 6 个月到一年才能获得这些功能,看来:

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

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

关于python - NumPy 或 Pandas : Keeping array type as integer while having a NaN value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11548005/

相关文章:

python - python的Maven等价物

linux - ubuntu/bash下递归重命名文件和目录

linux - 如何将编译器的所有输出捕获到文件中?

python - 将 MATLAB 代码转换为 Python 的工具

python - 如何在 Python 中创建命名空间包?

python - Python 'buffer' 类型有什么用?

c - 如何在 Linux 上递归列出 C 中的目录?

linux - 在 Linux 的文本文件中用逗号替换空格

linux - cut 或 awk 命令打印第一行的第一个字段

linux - SO_REUSEADDR(setsockopt 选项)的含义是什么 - Linux?