pandas.factorize für einen ganzen Datenrahmen

9

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.

    
clstaudt 08.09.2016, 11:50
quelle

3 Antworten

20

Sie können apply verwenden, wenn Sie factorize für jede Spalte einzeln benötigen:

%Vor%

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 :

%Vor%

Sie können sie über map um% zurückübersetzen. co_de%, wo Du Duplikate durch dict entfernen musst:

%Vor%     
jezrael 08.09.2016, 11:53
quelle
2

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%     
Gabe F. 14.10.2017 08:12
quelle
0

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.

    
tbrittoborges 10.04.2017 17:39
quelle