pandas.factorize
codiert Eingabewerte als Aufzählungstyp oder kategoriale Variable .
Aber wie kann ich viele Spalten eines Datenrahmens einfach und effizient konvertieren? Was ist mit dem Reverse-Mapping-Schritt?
Beispiel: Dieser Datenrahmen enthält Spalten mit String-Werten wie "Typ 2", die ich in Zahlenwerte umwandeln möchte - und eventuell später zurückübersetzen.
Sie können apply
verwenden, wenn Sie factorize
für jede Spalte einzeln benötigen:
Wenn Sie für denselben Zeichenfolgenwert dieselbe numerische Zahl benötigen:
%Vor%Wenn Sie die Funktion nur für einige Spalten anwenden möchten, verwenden Sie eine Teilmenge:
%Vor% Lösung mit factorize
:
Sie können sie über map
um% zurückübersetzen. co_de%, wo Du Duplikate durch dict
entfernen musst:
Ich fand diese Antwort auch sehr hilfreich: Ссылка
Ich habe versucht, Werte aus einer vorhandenen Spalte in einem Pandas DataFrame (eine Liste von IP-Adressen mit dem Namen 'SrcIP') zu nehmen und sie numerischen Werten in einer neuen Spalte (in diesem Beispiel 'ID') zuzuordnen.
Lösung:
%Vor%Ergebnis:
%Vor%Ich möchte meine Antwort umleiten: Ссылка
Alte Antwort
Eine andere lesbare Lösung für dieses Problem, wenn Sie die Kategorien konsistent über den resultierenden Datenrahmen halten möchten, ist Ersetzen:
%Vor%Es ist etwas schlechter als das Beispiel von @jezrael, aber einfacher zu lesen. Es könnte auch für größere Datensätze besser eskalieren. Ich kann einige Tests durchführen, wenn jemand interessiert ist.
Tags und Links python machine-learning pandas dataframe