You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将DataFrame中float64列的整数值替换为空值?

解决DataFrame中float64列整数值替换为空值的问题

你之前方法的问题说明

  • 第一种方法用' '空格字符串替换,会导致列类型从float64变为object,破坏数值列的特性,且未处理NaN值的情况。
  • 第二种方法存在变量名错误(循环变量是cols,但代码里用了col),且直接给整个df赋值会意外修改其他列,逻辑范围不正确。
  • 第三种思路错误地将float类型列当作字符串处理,contains是字符串方法,不能直接用于数值列。

可行解决方案

因为你的列是float64类型,数值列的空值应该用np.nan表示(而非空格字符串),以下是两种可靠方法:

方法一:使用mask结合is_integer

import numpy as np
import pandas as pd

# 遍历每一列处理
for col in df.columns:
    # 先排除NaN值,再判断是否为整数,满足条件则替换为np.nan
    df[col] = df[col].mask(df[col].notna() & df[col].apply(lambda x: x.is_integer()), np.nan)

方法二:使用取模运算判断整数

import numpy as np
import pandas as pd

for col in df.columns:
    # 排除NaN后,判断数值取模1是否等于0(整数的特征)
    df[col] = df[col].mask(df[col].notna() & (df[col] % 1 == 0), np.nan)

更简洁的批量处理方式(无需循环)

如果所有列都是float64类型,可以直接对整个DataFrame操作:

import numpy as np
import pandas as pd

df = df.mask(df.notna() & df.applymap(lambda x: x.is_integer()), np.nan)

内容的提问来源于stack exchange,提问作者Panvas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 05:10:03