Не уверен, что это лучшая практика ...
blockquote> blockquote>Предложение: не реализуйте это или что-нибудь, когда вы не уверены. Переоценивайте, когда факты известны, затем выполните до / после проверок производительности.
Возможно, попробуйте изменить один столбец за раз:
for i in main_data:
min_val = df[i].min()
max_val = df[i].max()
if 'C' in i:
#Applying normalization for C between [-40,+150]
new_value = normalize(df[i].values, min_val, max_val, -40, 150)
else:
#Applying normalization for A , B between [-1,+1]
new_value = normalize(df[i].values, min_val, max_val, -1, 1)
df_norm[i] = new_value
# df_norm = pd.df(new_value)
Вот рабочий пример с возможным решением:
import pandas as pd
import random
import numpy as np
a = list(random.sample(range(0,1000),100))
b = list(random.sample(range(0,1000),100))
c = list(random.sample(range(0,1000),100))
df = pd.DataFrame({'A':a, 'B':b, 'C': c})
my_dct = {'key_a': [],'key_b': [],'key_c': []}
for i in df.columns:
min_val = df[i].min()
max_val = df[i].max()
if i=='C':
#Applying normalization for C between [-40,+150]
my_dct['key_c'] = normalize(df[i].values, min_val, max_val, -40, 150)
elif i=='A':
#Applying normalization for A , B between [-1,+1]
my_dct['key_a'] = normalize(df[i].values, min_val, max_val, -1, 1)
else:
my_dct['key_b'] = normalize(df[i].values, min_val, max_val, -1, 1)
df2 = pd.DataFrame(my_dct)
df2.to_csv('my_file.csv')