Python 使用循环将最小-最大标量应用于多个数据集

Python 使用循环将最小-最大标量应用于多个数据集,python,pandas,Python,Pandas,我有n个数据帧。我想对它们中的每一个应用最小-最大标量 from sklearn import preprocessing x = df1.values #returns a numpy array min_max_scaler = preprocessing.MinMaxScaler() x_scaled = min_max_scaler.fit_transform(x) #df11= pd.DataFrame(x_scaled) x_scaled1 = pd.DataFrame(x_sca

我有n个数据帧。我想对它们中的每一个应用最小-最大标量

from sklearn import preprocessing

x = df1.values #returns a numpy array
min_max_scaler = preprocessing.MinMaxScaler()
x_scaled = min_max_scaler.fit_transform(x)
#df11= pd.DataFrame(x_scaled)
x_scaled1 = pd.DataFrame(x_scaled, columns = df1.columns)

一个df。我试过几种方法。一切都失败了。

请列出您为解决问题而尝试的方法。 但是,您可以将数据帧对象存储在列表中。然后,您可以在循环列表时缩放每个数据帧。我正在为两个数据帧做这项工作,但这同样适用于其中的n个数据帧

df1 = {'col1' : np.random.randint(1,26,10) , 'col2' : np.random.randint(1,26,10)}
df2 = {'col1' : np.random.randint(1,26,10) , 'col2' : np.random.randint(1,26,10)}

df1 = pd.DataFrame(df1)
df2 = pd.DataFrame(df2)

from sklearn import preprocessing

df_list = [df1,df2]

def loop_scaler(df_list):
    scaled_df_list = []
    for df in df_list:
        df_array = df.values
        min_max_scaler = preprocessing.MinMaxScaler()
        df_scaled = min_max_scaler.fit_transform(df_array)
        df_scaled = pd.DataFrame(df_scaled, columns = df.columns)
        scaled_df_list.append(df_scaled)
    return scaled_df_list

您可以打印并查看缩放输出:

scaled_df_list = loop_scaler(df_list)
for scaled_df in scaled_df_list:
    print(scaled_df.head(5))

这可能有助于解决你的问题

scaled_df1, scaled_df2 = loop_scaler(df_list)
print(scaled_df1.show())
print(scaled_df2.show())
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
new_data = pd.DataFrame(data)
scaler = MinMaxScaler()
transformed_data = pd.DataFrame(scaler.fit_transform(new_data))