如何仅对pandas DataFrame的特定列使用StandardScaler?
我有一个包含三列的数据框:'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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。