导读:本期聚焦于小伙伴创作的《pandas 如何处理 nullable integer 类型避免 NaN 转 float》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《pandas 如何处理 nullable integer 类型避免 NaN 转 float》有用,将其分享出去将是对创作者最好的鼓励。

在pandas的数据处理场景中,当整数列存在缺失值时,默认的整数类型会无法存储NaN,从而自动将整列转换为float类型,这会给后续的数值计算、类型校验带来很多不必要的麻烦。pandas从0.24版本开始引入了nullable integer类型,专门解决这类问题。

pandas 如何处理 nullable integer 类型避免 NaN 转 float

什么是nullable integer类型

nullable integer是pandas扩展出的整数类型,和传统numpy的int32、int64不同,它支持用<NA>来表示缺失值,不会因为有缺失值就将整个列的类型转换为float。这类类型的命名规则是在传统整数类型前加大写字母I,比如Int8、Int16、Int32、Int64,分别对应不同位数的可空整数类型。

创建nullable integer类型数据

我们可以通过多种方式创建nullable integer类型的Series或DataFrame列:

1. 直接指定dtype参数

在创建Series或者读取数据时,直接指定dtype为对应的可空整数类型即可:

import pandas as pd
import numpy as np

# 创建包含缺失值的Series,指定dtype为Int64
s = pd.Series([1, 2, np.nan, 4], dtype="Int64")
print(s)
print(s.dtype)

运行上述代码后,输出的Series类型为Int64,缺失值位置显示为<NA>,不会出现float类型。

2. 转换已有列的类型

如果已有的列是float类型,我们可以通过astype方法将其转换为nullable integer类型:

# 创建一个float类型的Series
s_float = pd.Series([1.0, 2.0, np.nan, 4.0])
# 转换为Int64类型
s_int = s_float.astype("Int64")
print(s_int)
print(s_int.dtype)

nullable integer类型的运算规则

nullable integer类型参与运算时,遵循以下规则:

  • 两个nullable integer类型的列进行运算,结果仍然为nullable integer类型,缺失值参与运算后结果仍为<NA>
  • nullable integer类型和普通整数运算,结果仍为nullable integer类型
  • nullable integer类型和float类型运算,结果会转换为float类型

下面是运算的示例代码:

s1 = pd.Series([1, 2, pd.NA], dtype="Int64")
s2 = pd.Series([3, pd.NA, 5], dtype="Int64")

# 两个Int64列相加
s_add = s1 + s2
print(s_add)
print(s_add.dtype)

# Int64列和普通整数相加
s_add2 = s1 + 10
print(s_add2)

读取数据时指定nullable integer类型

在使用pandas读取CSV、Excel等文件时,也可以通过dtype参数指定列的类型为nullable integer,避免读取后类型自动转为float:

# 读取CSV文件时,指定id列为Int64类型
df = pd.read_csv("test.csv", dtype={"id": "Int64"})
print(df.dtypes)

注意事项

使用nullable integer类型时需要注意以下几点:

  • nullable integer类型的缺失值用<NA>表示,不是numpy的np.nan,判断缺失值时建议使用pd.isna()方法,兼容两种缺失值表示
  • 如果需要将nullable integer类型转换为普通numpy整数类型,需要先处理缺失值,否则会报错
  • 部分老版本的pandas函数可能不支持nullable integer类型,使用时如果遇到兼容问题,可以检查pandas版本是否达标

通过合理使用nullable integer类型,我们可以在保留整数类型的同时正确处理缺失值,避免NaN导致的类型向float转换的问题,让数据处理的类型逻辑更加清晰准确。

pandasnullable_integerNaNfloatInt64修改时间:2026-07-07 02:42:22

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。