如何仅对pandas DataFrame的特定列使用StandardScaler?

编程语言 2026-07-08

我有一个包含三列的数据框:'power'、'time' 和 'status'。'status' 列的值为0 或1(目标变量)。我不想对 'status' 列进行缩放。

如何在保持数据框格式的前提下,仅对 'power' 和 'time' 两列应用StandardScaler?

这是我的示例代码:

import pandas as pd

from sklearn.preprocessing import StandardScaler

# Sample data

data = {'power': [100, 200, 300], 'time': [1, 2, 3], 'status': [0, 1, 0]}

df = pd.DataFrame(data)

scaler = StandardScaler()

下一步的最佳做法是什么?

解决方案

最常用的方法是在 scaler = StandardScaler() 之后使用这些代码行:

cols_to_scale = ['power', 'time']
df[cols_to_scale] = scaler.fit_transform(df[cols_to_scale])
print(df)

输出:

      power      time  status
0 -1.224745 -1.224745       0
1  0.000000  0.000000       1
2  1.224745  1.224745       0

另一种方法是在 df = pd.DataFrame(data) 之后添加这些代码行:

X = df[['power', 'time']]
y = df['status']

scaler = StandardScaler()
X_scaled = pd.DataFrame(
    scaler.fit_transform(X),
    columns=X.columns,
    index=X.index
)

df_scaled = pd.concat([X_scaled, y], axis=1)
print(df_scaled)
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章