gewusst wie: anwenden einer Funktion auf mehrere Spalten in ein pandas dataframe zu einer Zeit
Ich Häufig den Umgang mit Daten, die ist schlecht formatiert (I. e. Anzahl der Felder sind nicht konsistent, etc)
Möglicherweise gibt es andere Wege, die ich bin mir nicht bewusst, aber so wie ich das formatieren einer einzelnen Spalte in ein dataframe ist mit Hilfe einer Funktion und Zuordnung der Spalte Funktion.
format = df.column_name.map(format_number)
Frage: 1 - was, wenn ich in einem dataframe mit 50 Spalten und anwenden möchten, die Formatierung auf mehrere Spalten, Spalte usw 1, 3, 5, 7, 9,
Können Sie gehen:
format = df.1,3,5,9.map(format_number)
.. So konnte ich formatieren alle meine Anzahl Spalten in einer Zeile?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie tun
df[['Col1', 'Col2', 'Col3']].applymap(format_number)
. Beachten Sie jedoch, dass diese zurückkehren wird neue Spalten; es verändert nicht die bestehenden DataFrame. Wenn Sie möchten, setzen Sie die Werte zurück in den ursprünglichen, Sie haben zu tun, diedf[['Col1', 'Col2', 'Col3']] = df[['Col1', 'Col2', 'Col3']].applymap(format_number)
.df.applymap(format_number)
.Könnten Sie
apply
wie diese:Würden Sie brauchen, um die Spalten angegeben, obwohl in Ihrem
format_number
Funktion:Dies ist nicht so elegant wie @BrenBarn die Antwort, aber es hat einen Vorteil, dass der dataframe wird geändert, so dass Sie nicht brauchen, um ordnen Sie die Spalten wieder
apply
zu einem dataframe dann das dataframe sich geändert, die änderungen in Ihre Funktion, so müssen Sie nicht zuweisen, um die Spalte, können Sie noch brauchen, um je nachdem, was Ihre Funktion ist, zu tun. Der Punkt ist, dass Sie brauchen nur zu rufendf.apply
und nicht zu sagen brauchen tundf[['col1','col2','col3']]=df.apply(lambda row: format_number(row), axis=1))
, in meinem code die Zuordnung erfolgt durch dieformat_number
- Funktion, so dass ich denke, die Belegung ist eher implizite als explizite wie BrenBarn Antwortdf.apply(lambda x: x **2)
Quadrat den Wert