我有一个像这样的数据框:
TOTAL | Name
3232 Jane
382 Jack
8291 Jones
我想在名为 SIZE
的数据框中创建一个新缩放的列,其中 SIZE
是 5 到 50 之间的数字。
例如:
TOTAL | Name | SIZE
3232 Jane 24.413
382 Jack 10
8291 Jones 50
我试过了
from sklearn.preprocessing import MinMaxScaler
import pandas as pd
scaler=MinMaxScaler(feature_range=(10,50))
df["SIZE"]=scaler.fit_transform(df["TOTAL"])
但得到了 Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
我已经尝试了其他事情,例如创建列表、转换列表并将其追加回数据框等。
最简单的方法是什么?
谢谢!
原文由 machump 发布,翻译遵循 CC BY-SA 4.0 许可协议
选项1
sklearn
你一次又一次地看到这个问题,错误真的应该表明你需要做什么。您基本上缺少输入的多余维度。将
df["TOTAL"]
更改为df[["TOTAL"]]
。选项 2
pandas
最好,我会绕过 sklearn,自己做最小-最大缩放。
这基本上就是最小-最大缩放器所做的,但是没有导入 scikit learn 的开销(除非必须,否则不要这样做,它是一个沉重的库)。