如何在pandas DataFrame中排除指定列后对其余列做MinMaxScaler缩放
解决方案
你可以通过pandas列名差集的方式排除B列,仅对剩余列做缩放,修改后的完整代码如下:
import pandas as pd from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() df = pd.DataFrame({'A':[14.00,90.20,90.95,96.27,91.21], 'B':[103.02,107.26,110.35,114.23,114.68], 'C':[3,5,4,2,3]}) # 排除B列,获取需要缩放的列 cols_to_scale = df.columns.difference(['B'], sort=False) # 仅对目标列做拟合转换 df[cols_to_scale] = scaler.fit_transform(df[cols_to_scale])
代码说明
df.columns.difference(['B'], sort=False)会返回所有列名中排除B后的列表,加sort=False参数是为了保留原始列的先后顺序,避免缩放后列顺序错乱- 拟合、转换、赋值三个步骤都仅作用于筛选出来的列,B列会完全保留原始数值
- 如果后续需要排除更多列,只需要修改
difference方法传入的列表即可,比如要排除B、D两列就写成difference(['B','D'], sort=False)
如果不需要用排除法,也可以直接指定要缩放的列:
cols_to_scale = ['A', 'C']
内容的提问来源于stack exchange,提问作者Undertaker2
相关产品推荐
相关产品推荐

