我有一个具有混合类型列的Pandas 数据帧,我想将skLearning的min_max_scaler应用到一些列.理想情况下,我希望在适当的位置进行这些转换,但还没有想出一种方法来做到这一点.我已经编写了以下可以工作的代码:

import pandas as pd
import numpy as np
from sklearn import preprocessing

scaler = preprocessing.MinMaxScaler()

dfTest = 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':['big','small','big','small','small']})
min_max_scaler = preprocessing.MinMaxScaler()

def scaleColumns(df, cols_to_scale):
    for col in cols_to_scale:
        df[col] = pd.DataFrame(min_max_scaler.fit_transform(pd.DataFrame(dfTest[col])),columns=[col])
    return df

dfTest

    A   B   C
0    14.00   103.02  big
1    90.20   107.26  small
2    90.95   110.35  big
3    96.27   114.23  small
4    91.21   114.68  small

scaled_df = scaleColumns(dfTest,['A','B'])
scaled_df

A   B   C
0    0.000000    0.000000    big
1    0.926219    0.363636    small
2    0.935335    0.628645    big
3    1.000000    0.961407    small
4    0.938495    1.000000    small

我很好奇这是否是进行此转换的首选/最有效的方法.有没有什么方法可以让我用df.application来做得更好?

我还感到惊讶的是,我无法使用以下代码:

bad_output = min_max_scaler.fit_transform(dfTest['A'])

如果我将整个数据帧传递给zoom 器,它会起作用:

dfTest2 = dfTest.drop('C', axis = 1) good_output = min_max_scaler.fit_transform(dfTest2) good_output

我不明白为什么将序列传递给定标器会失败.在上面的完整工作代码中,我希望只将一个序列传递给scaler,然后将dataframe column=设置为zoom 序列.我在其他几个地方看到过这个问题,但没有找到好的答案.如果您能帮助理解这里发生的一切,我们将不胜感激!

推荐答案

我不确定以前版本的pandas是否阻止了这一点,但现在下面的代码片段对我来说非常适合,并且不需要使用apply就能生成您想要的内容

>>> import pandas as pd
>>> from sklearn.preprocessing import MinMaxScaler


>>> scaler = MinMaxScaler()

>>> dfTest = 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':['big','small','big','small','small']})

>>> dfTest[['A', 'B']] = scaler.fit_transform(dfTest[['A', 'B']])

>>> dfTest
          A         B      C
0  0.000000  0.000000    big
1  0.926219  0.363636  small
2  0.935335  0.628645    big
3  1.000000  0.961407  small
4  0.938495  1.000000  small

Python相关问答推荐

如何处理嵌套的SON?

如何在Python中将returns.context. DeliverresContext与Deliverc函数一起使用?

如何避免Chained when/then分配中的Mypy不兼容类型警告?

删除所有列值,但判断是否存在任何二元组

scikit-learn导入无法导入名称METRIC_MAPPING64'

如何记录脚本输出

如何在solve()之后获得症状上的等式的值

当独立的网络调用不应该互相阻塞时,'

如何将一个动态分配的C数组转换为Numpy数组,并在C扩展模块中返回给Python

不允许访问非IPM文件夹

如何保持服务器发送的事件连接活动?

如何在Python中获取`Genericums`超级类型?

名为__main__. py的Python模块在导入时不运行'

在Python中计算连续天数

(Python/Pandas)基于列中非缺失值的子集DataFrame

我对这个简单的异步者的例子有什么错误的理解吗?

如何求相邻对序列中元素 Select 的最小代价

获取PANDA GROUP BY转换中的组的名称

如果列包含空值,则PANAS查询不起作用

对包含JSON列的DataFrame进行分组