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

Python函数中df.drop()与df.filter()失效问题求助

问题排查与解决

你的代码存在几处关键问题,直接导致操作未生效,以下是具体分析和修正方案:

1. 语法与赋值错误

standard_f函数里有两处核心问题:

  • for循环与后续代码未换行,会触发Python语法报错
  • 新列赋值时缺少=,没有将标准化后的结果存入DataFrame

修正后的函数代码:

from sklearn.preprocessing import StandardScaler

def standard_f(dset):
    scaler = StandardScaler()
    for i in dset.columns:
        # 将标准化结果转为Series后赋值给新列
        dset[i+"_std"] = scaler.fit_transform(dset[i].to_numpy().reshape(-1,1))
    return dset

2. 未接收函数返回值

df.drop(["customer_id"], axis=1)会返回删除指定列后的新DataFrame副本,不会修改原始df。如果仅调用standard_f(df.drop(...))但不把结果赋值给变量,原始数据自然不会有变化。正确用法:

# 将处理后的结果存入新变量
processed_df = standard_f(df.drop(["customer_id"], axis=1))
# 若要覆盖原始df,可直接赋值
df = standard_f(df.drop(["customer_id"], axis=1))

额外说明

Pandas的drop、filter等操作默认返回新的DataFrame副本,而非原地修改原数据(这是为了避免意外破坏原始数据)。如果一定要原地修改,可使用df.drop(..., inplace=True),但官方更推荐使用返回值的方式——inplace操作可能导致链式调用出错,且不利于调试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 23:30:00