2016-06-25 12 views
1

Hallo, ich bin neu in Python und Pandas.Ersetzen Sie einzigartige Werte von Pandas Datenrahmen

Ich habe die eindeutigen Werte einer der Spalte mit Pandas extrahiert. Jetzt nach dem Abrufen der eindeutigen Werte der Spalte, die Zeichenfolge sind.

['Others, Senior Management-Finance, Senior Management-Sales' 
    'Consulting, Strategic planning, Senior Management-Finance' 
    'Client Servicing, Quality Control - Product/ Process, Strategic  
    planning' 
    'Administration/ Facilities, Business Analytics, Client Servicing' 
    'Sales & Marketing, Sales/ Business Development/ Account Management,  
    Sales Support'] 

Ich möchte die Zeichenfolgenwerte durch den eindeutigen ganzzahligen Wert ersetzen.

der Einfachheit halber kann ich Ihnen die Dummy-Eingabe und -Ausgabe geben.

Eingang:

Col1 
    A 
    A 
    B 
    B 
    B 
    C 
    C 

Einzigartige df Wert wird kommen, wie unten

[ 'A' 'B' 'C' ] 

nach der Säule ersetzt ähnliche

Col1 
    1 
    1 
    2 
    2 
    2 
    3 
    3 

Bitte machen Sie mir die Art und Weise aussehen sollte, wie kann ich tun Sie es, indem Sie Schleife oder irgendeinen anderen Weg verwenden, weil ich mehr als 300 eindeutige Werte habe.

Antwort

1

Verwendung factorize:

df['Col1'] = pd.factorize(df.Col1)[0] + 1 
print (df) 
    Col1 
0  1 
1  1 
2  2 
3  2 
4  2 
5  3 
6  3 

Factorizing values.

Eine weitere numpy.unique Lösung, aber slowier in großen dataframe:

_,idx = np.unique(df['Col1'],return_inverse=True) 
df['Col1'] = idx + 1 
print (df) 
    Col1 
0  1 
1  1 
2  2 
3  2 
4  2 
5  3 
6  3 

Last können Sie Werte zu categorical konvertieren - vor allem, weil weniger memory usage:

df['Col1'] = pd.factorize(df.Col1)[0] 
df['Col1'] = df['Col1'].astype("category") 
print (df) 
    Col1 
0 0 
1 0 
2 1 
3 1 
4 1 
5 2 
6 2 

print (df.dtypes) 
Col1 category 
dtype: object 
+0

Noch einmal vielen Dank. – JT28

+0

Wie konvertiert man den Integer-Wert in einen String zurück? – JT28

+0

df ['Col1'] = df ['Col1']. Astyp ("str") – jezrael