【问题标题】:Scale columns in dataframe based on another column根据另一列缩放数据框中的列
【发布时间】:2021-07-28 10:19:38
【问题描述】:
我有如下所示的数据框:
| column1 |
column2 |
column3 |
| 1 |
0.01 |
0.001 |
| 2 |
0.02 |
0.002 |
| 3 |
0.03 |
0.003 |
我想根据第 1 列的最小和最大缩放器来缩放第 2 列和第 3 列,以获得以下结果:
| column1 |
column2 |
column3 |
| 1 |
1 |
1 |
| 2 |
2 |
2 |
| 3 |
3 |
3 |
这些数字只是为了便于理解问题而估算的。
我在网上看到的所有解决方案基本上都使用最小最大值,它们在 0-1 之间缩放列,但我想根据第一列的最小最大值来缩放它。
【问题讨论】:
标签:
pandas
scikit-learn
scale
minmax
【解决方案1】:
您可以在第 1 列上安装一个最小-最大缩放器并将其应用于其他列:
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaler.fit(df['column1'])
将其应用于第 i 列:
df['column_i'] = scaler.transform(df['column_i'])
【解决方案2】:
@Adrien's answer 很好,但是如果你想在没有外部依赖的情况下这样做:
MIN = df.min()
MAX = df.max()
(df-MIN)/(MAX-MIN)*(MAX['column1']-MIN['column1'])+MIN['column1']