Wie kann man idiomatisch eine Funktion wie get_dummies
ausführen, die eine einzelne Spalte erwartet und mehrere auf mehreren DataFrame-Spalten zurückgibt?Ausführen von get_dummies auf mehreren DataFrame-Spalten?
Antwort
Seit Pandas Version 0.15.0, pd.get_dummies
kann einen Datenrahmen direkt verarbeiten (davor, es könnte nur eine einzige Serie handhaben, und unten für die Problemumgehung sehen):
In [1]: df = DataFrame({'A': ['a', 'b', 'a'], 'B': ['c', 'c', 'b'],
...: 'C': [1, 2, 3]})
In [2]: df
Out[2]:
A B C
0 a c 1
1 b c 2
2 a b 3
In [3]: pd.get_dummies(df)
Out[3]:
C A_a A_b B_b B_c
0 1 1 0 0 1
1 2 0 1 0 1
2 3 1 0 1 0
Behelfslösung für Pandas < 0.15.0
Sie können für jede Spalte seperate es tun und dann concat die Ergebnisse:
In [111]: df
Out[111]:
A B
0 a x
1 a y
2 b z
3 b x
4 c x
5 a y
6 b y
7 c z
In [112]: pd.concat([pd.get_dummies(df[col]) for col in df], axis=1, keys=df.columns)
Out[112]:
A B
a b c x y z
0 1 0 0 1 0 0
1 1 0 0 0 1 0
2 0 1 0 0 0 1
3 0 1 0 1 0 0
4 0 0 1 1 0 0
5 1 0 0 0 1 0
6 0 1 0 0 1 0
7 0 0 1 0 0 1
Wenn Sie die Multi-Index-Spalte nicht möchten, entfernen Sie die keys=..
aus dem Concat-Funktionsaufruf.
Schön, ich mag die Multi-Index-Spalte. – chrisb
Jemand könnte etwas schlauer haben, aber hier sind zwei Ansätze. Angenommen, Sie haben einen Datenrahmen mit dem Namen df
mit den Spalten 'Name' und 'Jahr', für den Sie Dummies verwenden möchten.
Zuerst einfach über die Spalten Iterieren ist nicht so schlecht:
In [93]: for column in ['Name', 'Year']:
...: dummies = pd.get_dummies(df[column])
...: df[dummies.columns] = dummies
Eine weitere Idee, das patsy Paket zu verwenden wäre, die entworfen, um Datenmatrizen von R-Typ Formeln zu konstruieren.
In [94]: patsy.dmatrix(' ~ C(Name) + C(Year)', df, return_type="dataframe")
Es sei denn, ich die Frage nicht verstehen, wird es, indem man die Spalten Argument nativ in get_dummies unterstützt.
Mit Pandas 0,19, können Sie, dass in einer einzigen Zeile tun:
pd.get_dummies(data=df, columns=['A', 'B'])
Columns
gibt an, wo die eine heiße Encoding zu tun.
>>> df
A B C
0 a c 1
1 b c 2
2 a b 3
>>> pd.get_dummies(data=df, columns=['A', 'B'])
C A_a A_b B_b B_c
0 1 1.0 0.0 0.0 1.0
1 2 0.0 1.0 0.0 1.0
2 3 1.0 0.0 1.0 0.0
- 1. Ausführen von mehreren Threads
- 2. Pandas: get_dummies vs kategorischen
- 3. get_dummies Python Speicherfehler
- 4. Ausführen von mehreren Python-Version
- 5. Ausführen eines Befehls auf mehreren Windows-Servern
- 6. get_dummies für Pandas Spaltenliste enthält
- 7. Ausführen von VNC Vollbild mit mehreren Monitoren
- 8. Ausführen von Funktionen auf mehreren Untergruppen innerhalb eines data.frame (R)
- 9. Ausführen von mehreren Typoskripts 'tsc' -Befehlen
- 10. Ausführen von Integrationstests mit mehreren Zielplattformen
- 11. Tabellenfunktion in mehreren Zeilen ausführen?
- 12. Halte NaN-Werte nach get_dummies in Pandas
- 13. Behalte andere Variablen bei der Ausführung von get_dummies in Pandas
- 14. Ausführen von mehreren Testdaten mit demselben Satz von Testfällen
- 15. Ausführen eines Powershell-Skripts auf mehreren Servern mit Jenkins
- 16. Gespeicherte Prozedur auf mehreren Datenbanken mit dynamischen Parameternamen ausführen
- 17. Ausführen einer eigenständigen Hadoop-Anwendung auf mehreren CPU-Kernen
- 18. Gespeicherte Prozedur auf mehreren verbundenen Servern gegenüber separaten Verbindungen ausführen
- 19. Parallel-Junit-Tests auf mehreren Remote-Rechnern ausführen
- 20. Tool zum automatischen Ausführen von Komponententests in mehreren Umgebungen
- 21. Ausführen von mehreren GUIs in Docker mit X11 Forwarding
- 22. Ausführen von JUnit-Tests aus mehreren Projekten in Eclipse
- 23. Ausführen eines Sikuli-Skripts in mehreren Computern
- 24. ausführen Shell Befehl/Batch-Datei mit mehreren Zeilen von VBA
- 25. Elm: Iterate Liste Ausführen von mehreren HTTP-Anfragen
- 26. Ausführen von mehreren Hive-Abfragen mit tHiveRow-Komponente in Talend
- 27. Ausführen von Befehlen auf Python
- 28. Ausführen von VBA auf Fußnotentext
- 29. Ausführen einer Azure-Rolle in mehreren Regionen?
- 30. Automatische Bereitstellung von Dateien auf mehreren Macs
Können Sie ein Beispiel geben? Welche Ausgabe haben Sie im Sinn? – joris