我想将伸缩(使用 StandardScaler ()从 skearn.preprocess)应用到熊猫数据框架。下面的代码返回一个 numpy 数组,因此我失去了所有的列名和索引。这不是我想要的。
features = df[["col1", "col2", "col3", "col4"]]
autoscaler = StandardScaler()
features = autoscaler.fit_transform(features)
我在网上找到的一个“解决方案”是:
features = features.apply(lambda x: autoscaler.fit_transform(x))
这似乎有效,但引发了一个反对的警告:
/usr/lib/python3.5/site-package/sklearn/preprocess/data.py: 583: 在0.17中,传递1d 数组作为数据是不推荐的 并将在0.19中引发 ValueError 如果数据只有一个特性,则为 X.respe (-1,1)或 X.respe (1,-1) 如果它包含一个单一的样本。
因此我试着:
features = features.apply(lambda x: autoscaler.fit_transform(x.reshape(-1, 1)))
但这给出了:
回溯(最近的调用) : 文件“ ./analyse.py”,第91行,in Features = Features. application (lambda x: autoscaler.fit _ change (x.reshape (- 1,1)))文件 “/usr/lib/python3.5/site-packages/anda/core/frame.py”,第3972行,in 申请 返回“/usr/lib/python3.5/site-package/anda/core/frame.py”,第4081行,in 应用标准 Result = self _ structor (data = results,index = index) File“/usr/lib/python3.5/site-package/anda/core/frame.py”,第226行,in Init (数据、索引、列、 dtype = dtype)文件“/usr/lib/python3.5/site-package/anda/core/frame.py”,第363行,in (咒语) Dtype = dtype)文件“/usr/lib/python3.5/site-package/anda/core/frame.py”,第5163行,in _ array _ to _ mgr Array = _ homogenize (array,index,dtype) File“/usr/lib/python3.5/site-package/anda/core/frame.py”,第5477行,in 同质化 “/usr/lib/python3.5/site-package/anda/core/series.py”,第2885行, In _ sanitize _ array 异常(“数据必须是一维的”)异常: 数据必须是一维的
如何将缩放应用到熊猫数据框架,使数据框架保持完整? 如果可能的话,不复制数据。