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

Pandas DataFrame各列调用自定义归一化函数不生效如何处理

问题根因
  • 你的normalization函数未返回计算结果,函数内部对参数x的赋值仅修改了局部变量的指向,不会对原DataFrame的列数据产生任何影响
  • 循环调用函数时,没有将计算后的结果赋值回原DataFrame的对应列,因此操作看起来没有生效
可用修复方案

方案1:修改自定义函数+循环赋值(和你原有写法逻辑最接近,容易理解)

给函数添加返回值,循环调用时把计算结果写回原DataFrame的对应列即可:

import numpy as np

# 给函数添加返回值
def normalization(x):
    return (x - np.min(x)) / (np.max(x) - np.min(x))

# 循环时将结果写回对应列
for column in df.columns:
    df[column] = normalization(df[column])

方案2:用Pandas原生apply方法,无需手动写循环

apply方法的axis=0参数表示按列对数据应用函数,刚好匹配你的需求,代码更简洁:

df = df.apply(normalization, axis=0)
注意事项

如果某一列的最大值和最小值相等,计算时会出现除以0的报错,可以给函数加边界处理逻辑:

def normalization(x):
    min_x = np.min(x)
    max_x = np.max(x)
    if max_x == min_x:
        # 列内所有值相同时,统一返回0即可,可根据你的需求调整返回值
        return np.zeros_like(x)
    return (x - min_x) / (max_x - min_x)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:36:02