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

自定义DataFrame空值清理函数运行后原数据仍有空值是什么原因

问题核心原因
  • pandas的dropna()方法默认不会修改原DataFrame,仅会返回一个删除了空值的新DataFrame对象,你代码中未指定inplace=True参数,也未将处理后的新对象绑定回原变量。
  • 循环中遍历得到的df是函数内的局部临时变量,对df重新赋值仅会修改该局部变量的指向,不会改变外部传入的df1、df2的指向,也不会修改原对象的内容。
  • 函数最终返回的是未做任何修改的原argv元组,即使你调用时接收返回值,拿到的也是未处理的原对象,且你调用时没有接收返回值重新赋值给外部变量,外部的df1、df2自然还是携带空值的原始对象。
正确实现方案

方案1:直接修改原对象(适合不需要保留原始数据的场景)

def cleanup_data(*argv):
    for df in argv:
        df.dropna(inplace=True)

# 调用后df1、df2会直接被修改
cleanup_data(df1, df2)

方案2:返回处理后的新对象(适合需要保留原始数据的场景)

def cleanup_data(*argv):
    return [df.dropna() for df in argv]

# 调用时接收返回值赋值给原变量即可
df1, df2 = cleanup_data(df1, df2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:54:04