Python:如何创建一个循环遍历df中每一列的Minmax函数?

问题描述 投票:0回答:1

我正在尝试为我的df创建一个Minmax函数,其中函数必须单独处理df的每一列并处理它。

我做了什么:

import pandas as pd
from sklearn import preprocessing


data = pd.DataFrame({ 'col1' : ['1', '1', '1', '1', '2', '2', '2', '3', '3'],
        'col2' : ['5', '8', '7', '12', '2', '1', '3', '15', '4'],
        'col3' : ['6', '8', '8', '10', '5', '1', '0', '6', '3'],
        'col4' : ['7', '7', '7', '0', '20', '12', '5', '5', '1']
        }, dtype='int32')

def minmax(column):
    float_array = data[column].values.astype(float).reshape(-1,1)
    min_max_scaler = preprocessing.MinMaxScaler()
    scaled_array = min_max_scaler.fit_transform(float_array)


for data.column in data.columns[1:]:
    minmax(data.column)

当我运行它时,我没有输出。因此,当我将minmax(data.column)循环中的for更改为print(minmax(data.column))时,它显示以下输出:

for data.column in data.columns[1:]:
    print(minmax(data.column))
None
None
None

有人可以解释我在这里做的错误是什么?

谢谢

编辑1:

我想输出这样一种格式,我可以将它输入另一个功能,它上面有OneClassSVM

python python-3.x pandas
1个回答
1
投票

我看到2个问题 - 在函数中丢失return并在循环中使用新变量,例如c用于迭代列名的成员:

def minmax(column):
    float_array = data[column].values.astype(float).reshape(-1,1)
    min_max_scaler = preprocessing.MinMaxScaler()
    scaled_array = min_max_scaler.fit_transform(float_array)
    return scaled_array

for c in data.columns[1:]:
    arr = minmax(c)
    print (arr)

for c in data.columns[1:]:
    arr1 = data[c].values.astype(float).reshape(-1,1)
    #array for next processing
    print (arr1)
© www.soinside.com 2019 - 2024. All rights reserved.