Ich habe einen Datenrahmen mit diesem Datentyp (zu viele Spalten):
col1 int64
col2 int64
col3 category
col4 category
col5 category
Spalten scheinen so zu sein:
Name: col3, dtype: category
Categories (8, object): [B, C, E, G, H, N, S, W]
Ich möchte alle Werte in Spalten wie folgt in eine Ganzzahl konvertieren:
[1, 2, 3, 4, 5, 6, 7, 8]
Ich habe dies für eine Spalte folgendermaßen gelöst:
dataframe['c'] = pandas.Categorical.from_array(dataframe.col3).codes
Jetzt habe ich zwei Spalten in meinem Datenrahmen - alte col3
und neue c
und muss alte Spalten löschen .
Das ist schlechte Praxis. Es funktioniert, aber in meinem Datenrahmen viele Spalten und ich möchte es nicht manuell tun.
Wie macht das pythonisch und nur klug?
df['col2'].cat.categories
zum Beispiel.NaN
einzigartig ist-1
cat.codes
möglicherweise NICHT die sind, die Sie in der Serie sehen!Das funktioniert bei mir:
Ausgabe:
quelle
Wenn Sie nur befürchten, dass Sie eine zusätzliche Spalte erstellen und später löschen, verwenden Sie zunächst keine neue Spalte.
Du bist fertig. Jetzt, da
Categorical.from_array
es veraltet ist,Categorical
direkt verwendenWenn Sie auch die Zuordnung vom Index zum Label benötigen, gibt es dafür noch bessere Möglichkeiten
Überprüfen Sie unten
quelle
Hier müssen mehrere Spalten konvertiert werden. Ein Ansatz, den ich verwendet habe, ist ..
Dadurch werden alle Spalten für Zeichenfolgen / Objekttypen in kategorial konvertiert. Wendet dann Codes auf jeden Kategorietyp an.
quelle
Bei kategorialen Daten in Spalte Umwandlung C von Daten - Set - Daten , müssen wir folgendes tun:
quelle
@ Quickbeam2k1, siehe unten -
Mit sklearn
quelle
fit_transform
jetzt anstelletransform_fit
der Labelencoder-Definition und korrigieren diese. Warum benutzt duiloc[:,:]
? das ist nutzlos. Was ist der Grund für das Bild? Für den Fall, dass Sie mich und @theGtknerd wrond beweisen wollten, haben Sie versagt.Was ich tue, ist, ich
replace
schätze.So was-
Auf diese Weise werden
col
Spalten mit kategorialen Werten durch numerische Werte ersetzt.quelle
Verwenden Sie diese Option für eine bestimmte Spalte, wenn Sie sich nicht für die Bestellung interessieren
Wenn Sie sich für die Bestellung interessieren, geben Sie diese als Liste an und verwenden Sie diese
quelle