Pandas调用.tolist()转换列表时整数变为浮点数该如何解决
Pandas读取Excel整数列输出浮点数+NaN问题解决方案
问题原因
Pandas 传统 int 数据类型不支持空值(NaN),只要目标列存在空值,整列数据会自动被提升为 float64 类型,因此所有整数都会被转换为带.0后缀的浮点数。
解决方案
方案1:过滤空值后输出整数列表
不需要保留空值时,直接删除NaN后转换类型即可:
import pandas as pd def read_xlsx(): df = pd.read_excel('pc.xlsx') return df['Gtin'].dropna().astype(int).tolist()
输出结果为纯整数组成的列表,无空值。
方案2:空值替换为指定整数占位符
需要保留原位置的空值标记时,可将NaN替换为自定义的整数占位值(如0、-1等无效值标记):
import pandas as pd def read_xlsx(): df = pd.read_excel('pc.xlsx') # 可自行将fillna的参数修改为你需要的默认整数 return df['Gtin'].fillna(0).astype(int).tolist()
方案3:保留空值同时其他值保持整数类型
如果需要保留原生NaN,同时非空值保持整数格式,可使用Pandas支持空值的Nullable Integer类型(注意类型名首字母大写为Int64):
import pandas as pd def read_xlsx(): # 读取时指定列类型为支持空值的整数类型 df = pd.read_excel('pc.xlsx', dtype={'Gtin': 'Int64'}) return df['Gtin'].tolist()
输出列表中非空值为整数类型,空值保持为NaN。
内容的提问来源于stack exchange,提问作者Raisul Islam
相关产品推荐
相关产品推荐

