我正在尝试为我的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
。
我看到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)