2016-08-31 1 views
2

So habe ich einen Datenrahmen, die ich durch Zusammenführen von Training (beschriftet) und Test (unmarkierte) Datenrahmen gebildet. Und um den Testdatenrahmen zu entfernen, habe ich eine Spalte behalten, die eine Kennung hat, wenn die Zeile zu Training oder Test gehörte. Jetzt muss ich alle Werte in allen Spalten normalisieren, außer für diese eine Spalte "SL Nr." aber ich finde keinen Weg, diese eine Spalte zu passieren. Hier ist, was ichNormalisieren Pandas Datenrahmen mit StandardScaler() mit Ausnahme einer bestimmten Spalte

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

data_norm = data_x_filled.copy() #Has training + test data frames combined to form single data frame 
normalizer = StandardScaler() 
data_array = normalizer.fit_transform(data_norm) 
data_norm = pd.DataFrame(data_array,columns = data_norm.columns).set_index(data_norm.index) 

tun Ich will nur die Spalte „Sl Nein“ auszuschließen für die Normalisierung aber wollen es nach der Normalisierung behalten.

Antwort

4

versuchen, dies kann es Verwendung numpy als np arbeiten:

data_norm = data_x_filled.copy() #Has training + test data frames combined to form single data frame 
normalizer = StandardScaler() 
data_array = normalizer.fit_transform(data_norm.ix[:,data_norm.columns!='SI No']) 
data_norm = pd.DataFrame(np.column_stack((data_norm['SI No'].values,data_array)),columns = data_norm.columns).set_index(data_norm.index) 
+0

Das funktionierte :). Ich ersetzte meine Lösung durch Ihre, da ich im Wesentlichen die Spalte fallen ließ und nach der Verarbeitung wieder hinzufügte. Dies ist kürzer und eleganter. – Shivendra

+0

@Shivendra Fad könnte dir helfen :). – shivsn

Verwandte Themen