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

如何对pandas DataFrame多列统一应用MinMaxScaler?

对Pandas DataFrame指定多列统一应用MinMaxScaler的实现方法

默认的MinMaxScaler会单独对每列数据进行缩放,要实现基于指定多列全部数据的统一缩放,核心是把这些列的数据合并成一维数据集,让缩放器基于全局的最小/最大值拟合,再将缩放结果拆分回原列结构。

具体步骤与代码示例

  1. 导入依赖库
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
  1. 准备数据并指定目标列
    假设你的DataFrame名为df,需要缩放的12列可以通过列名列表或索引范围指定,比如:
# 示例:按列名指定要缩放的12列
scale_cols = ['col_a', 'col_b', 'col_c', ...]  # 替换为你的实际列名

# 或者按索引范围选取(比如前12列)
# scale_cols = df.columns[:12]
  1. 合并目标列数据并拟合缩放器
    将目标列的数据摊平为一维数组,让缩放器基于全部数据计算全局的最小/最大值:
# 提取目标列数据并转为一维二维数组(MinMaxScaler要求输入为二维)
data_to_scale = df[scale_cols].values.ravel().reshape(-1, 1)

# 初始化并拟合缩放器
scaler = MinMaxScaler()
scaler.fit(data_to_scale)
  1. 执行缩放并赋值回原DataFrame
    将缩放后的一维数据重塑回原目标列的形状,替换原数据:
# 缩放数据并重塑结构
scaled_data = scaler.transform(data_to_scale).reshape(df[scale_cols].shape)

# 赋值回原DataFrame
df[scale_cols] = scaled_data

完整测试示例

import pandas as pd
from sklearn.preprocessing import MinMaxScaler

# 构造测试DataFrame(包含4列,其中3列需要统一缩放)
df = pd.DataFrame({
    'col1': [1, 2, 3, 4, 5],
    'col2': [10, 20, 30, 40, 50],
    'col3': [100, 200, 300, 400, 500],
    'col4': [0, 1, 0, 1, 0]  # 无需缩放的列
})

# 指定需要统一缩放的列
scale_cols = ['col1', 'col2', 'col3']

# 合并数据并拟合缩放器
data_ravel = df[scale_cols].values.ravel().reshape(-1, 1)
scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(data_ravel)

# 赋值回原DataFrame
df[scale_cols] = scaled_data.reshape(df[scale_cols].shape)

print(df)

注意事项

  • 如果目标列存在缺失值(NaN),需要先通过df[scale_cols].fillna()等方式处理,否则MinMaxScaler会报错。
  • 缩放后的数值范围默认是[0,1],如果需要其他范围,可以在初始化时指定feature_range=(min_val, max_val),比如MinMaxScaler(feature_range=(-1,1))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 10:50:25