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

如何编写遍历DataFrame所有列的归一化函数并生成新DataFrame

实现方案

第一步:修正归一化函数

你现有的单列归一化函数存在两个小问题:一是变量x未定义,二是依赖全局变量DFref,调整为通用版本更稳妥:

def normalize(column_data):
    # 转换为int类型
    x = column_data.astype(int)
    # 向量化运算实现归一化,无需手动循环
    return x / x.sum()

第二步:生成全列归一化的新DataFrame

最简实现(推荐)

直接用pandas内置的apply方法按列执行归一化,无需手动写循环:

# 假设你的原始DataFrame名称为raw_df
normalized_df = raw_df.apply(normalize, axis=0)

axis=0代表按列应用函数,刚好匹配你按单列单独归一化的需求

手动遍历列的实现

如果你需要自己编写遍历逻辑的函数,可以参考如下写法:

import pandas as pd

def normalize_all_columns(raw_df):
    # 初始化结果DataFrame,索引和原始DataFrame保持一致
    result_df = pd.DataFrame(index=raw_df.index)
    # 遍历所有列
    for col_name in raw_df.columns:
        result_df[col_name] = normalize(raw_df[col_name])
    return result_df

# 调用方法
normalized_df = normalize_all_columns(raw_df)

注意事项

  • 如果原始DataFrame中存在值全为0的列,会触发除以0的报错,建议提前过滤这类列或者添加异常处理逻辑
  • 当前归一化逻辑是按列总和缩放,如果需要使用min-max归一化等其他规则,直接修改normalize函数内的运算逻辑即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:15:03