Python fillna填充CSV空单元格时,如何避免原有整数转为浮点型?
解决CSV空值填充0后整数变浮点数的问题
- 填充后转换数据类型
先填充数值0(不是字符串"0"),再将目标列转为整数类型:
import pandas as pd df = pd.read_csv("your_file.csv") # 填充所有空值为0 df.fillna(0, inplace=True) # 单列转换为整数 df["target_column"] = df["target_column"].astype(int) # 全表转换为整数(确保所有列都是整数型数据) df = df.astype(int)
如果数据中存在非整数的数值,转int会报错,这时可以用astype('Int64')(大写I),这是pandas支持的可空整数类型,兼容空值场景(不过填充后已经没有空值了,两种方式都可行)。
- 读取CSV时指定数据类型
读取文件阶段就指定列的整数类型,再填充0,避免类型自动转为浮点数:
# 指定单个列的类型 df = pd.read_csv("your_file.csv", dtype={"target_column": int}) df.fillna(0, inplace=True) # 全表用可空整数类型读取 df = pd.read_csv("your_file.csv", dtype='Int64') df.fillna(0, inplace=True)
- 用replace替换空值
也可以通过replace替换空值为0后转类型,效果和fillna一致:
df.replace(pd.NA, 0, inplace=True) df["target_column"] = df["target_column"].astype(int)
内容的提问来源于stack exchange,提问作者barista
相关产品推荐
相关产品推荐

