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

自定义DataFrame清洗函数运行后未生成df_cleaned的原因咨询

问题原因

  • 函数无返回值:你在函数内部完成df_cleaned拼接后没有用return语句输出结果,外部调用函数后自然无法拿到清洗后的数据集。
  • 循环追加逻辑错误:代码中写的是df_cleaned.append(df_cleaned),是把存储结果的列表本身追加到了列表里,而非每次生成的单列清洗结果df_clean_all,会导致后续pd.concat结果完全不符合预期。
  • 存在不必要的副作用:循环中每次都会给传入的data_set新增new列,会修改你外部的原始df_data数据。

修正后可运行的代码

import pandas as pd

def cleaning_data(data_set):
    df_cleaned = []
    # 遍历从第5列开始的所有列,将变量名从index改为col避免和索引歧义
    for col in data_set.columns[4:]:
        # 直接生成当前列的清洗结果,无需修改原数据集
        ser_clean = data_set[col].where(
            data_set[col].between(data_set[col].quantile(0.05), data_set[col].quantile(0.95))
        )
        # 剔除异常值后用均值填充空值
        ser_clean = ser_clean.fillna(ser_clean.mean())
        df_cleaned.append(ser_clean)
    # 横向拼接所有清洗后的列
    df_cleaned = pd.concat(df_cleaned, axis=1)
    # 返回清洗后的结果
    return df_cleaned

# 调用时用变量接收返回值即可得到预期的df_cleaned
df_cleaned = cleaning_data(df_data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:54:02