如何在NumPy整数类型列中存储NaN实现数值单元格留空
适配场景的解决方案
使用NumPy可空整数类型(要求NumPy版本≥1.20)
你遇到的报错根源是NumPy原生小写开头的int/int32/int64等基础整数类型本身不支持空值,从1.20版本开始NumPy官方推出了专门的可空整数系列类型,首字母大写写为Int8/Int16/Int32/Int64,完全匹配你的所有要求:
- 列的数据类型标记为整数,符合期刊对内容类型的要求
- 支持直接存放
np.nan作为缺失值,导出表格时会自动渲染为空白,不需要额外替换为0 - 有效整数不会出现
.0后缀,完全满足引用编号的学术规范要求 - 不需要修改原有数据结构,仅调整dtype声明即可
修改后的可运行代码如下:
import numpy as np test_data = [[2.3, 4], [1.1, np.nan]] # 仅将原有int替换为大写开头的Int64即可 test_array = np.array(test_data, dtype=[("col1", float), ("col2", "Int64")])
如果你使用的NumPy版本低于1.20无法升级,也可以使用Pandas的可空整数类型封装结构化数组,逻辑完全一致,仅需将dtype替换为pd.Int64Dtype()即可。
内容的提问来源于stack exchange,提问作者mknote
相关产品推荐
相关产品推荐

