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

如何在Python Pandas DataFrame中标准化部分列并替换原数据?

嘿,我来帮你搞定这两个问题,咱们一步步来:

问题1:如何在Python Pandas DataFrame中对部分列进行标准化?

对DataFrame的部分列做标准化其实很简单,核心思路是只选中需要标准化的列,用StandardScaler处理后再放回原DataFrame,具体步骤如下:

  • 先导入依赖库:pandas 和 sklearn.preprocessing.StandardScaler
  • 从DataFrame中筛选出需要标准化的目标列
  • 用StandardScaler拟合并转换这些列(转换后会得到numpy数组)
  • 将转换后的结果赋值回原DataFrame的对应列,保留其他不需要处理的列
问题2:将标准化后的数组替换回原DataFrame的对应列

你之前的代码问题在于直接把整个df替换成了转换后的numpy数组,导致丢失了id、item这些不需要标准化的列。咱们修改一下代码,既能完成标准化,又能保留原DataFrame的完整结构:

首先,先还原你的原始DataFrame(方便测试):

import pandas as pd
from sklearn.preprocessing import StandardScaler

# 构建原始数据
data = {
    'id': [1, 2, 3, 4, 5],
    'cost': [300, 3, 1, 5, 2],
    'sales': [50, 88, 70, 80, 999],
    'item': ['pen', 'bottle', 'drink', 'cup', 'ink']
}
df = pd.DataFrame(data)

然后执行标准化并替换列:

# 初始化标准化器
scaler = StandardScaler()

# 对指定列进行拟合+转换,得到标准化后的数组
scaled_data = scaler.fit_transform(df[['cost', 'sales']])

# 把标准化后的数据赋值回原DataFrame的对应列
df[['cost', 'sales']] = scaled_data

执行完这段代码后,你查看df就会发现:id和item列完全保留,cost和sales列已经替换成了你得到的标准化数组值。

额外小贴士

如果之后你需要用同一个标准化规则处理其他数据(比如测试集),建议分开fit和transform步骤,这样能保证均值和标准差的一致性:

# 先在训练数据上拟合标准化器
scaler.fit(df[['cost', 'sales']])
# 转换训练数据
df[['cost', 'sales']] = scaler.transform(df[['cost', 'sales']])
# 后续处理测试集时直接用同一个scaler转换
# test_df[['cost', 'sales']] = scaler.transform(test_df[['cost', 'sales']])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:33:47