Ich habe eine riesige pandas
DataFrame
, die wie dieser (Probe) aussieht:Das Umbenennen von Pandas Col durch Dictionary hat keine Auswirkungen auf den ursprünglichen DataFrame?
df = pd.DataFrame({"col1":{0:"There ARE NO ERRORS!!!", 1:"EVERYTHING is failing", 2:"There ARE NO ERRORS!!!"}, "col2":{0:"WE HAVE SOME ERRORS", 1:"EVERYTHING is failing", 2:"System shutdown!"}})
Ich habe eine Funktion cleanMessage
genannt, die Zeichensetzung Streifen und Klein String zurückgibt. Zum Beispiel würde cleanMessage("THERE may be some errors, I don't know!!")
there may be some errors i dont know
zurückgeben.
Ich versuche, jede Nachricht in col1
mit was auch immer cleanMessage
zurückgibt für diese bestimmte Nachricht (grundsätzlich Reinigung dieser Nachricht Spalten nach oben). pd.DataFrame.iterrows
funktionierte OK für mich, war aber ein bisschen langsam. Ich versuche, in der ursprünglichen df
neuen Werte an die Schlüssel grundsätzlich Karte, etwa so:
message_set = set(df["col1"])
message_dict = dict((original, cleanMessage(original)) for original in message_set)
df = df.replace("col1", message_dict)
So, das Original df
möchte:
>>> df
col1 col2
0 "There ARE NO ERRORS" "WE HAVE SOME ERRORS"
1 "EVERYTHING is failing" "EVERYTHING is failing"
2 "There ARE NO ERRORS!!!" "System shutdown!"
Und die "nach" df
sollte wie folgt aussehen:
>>> df
col1 col2
0 "there are no errors" "WE HAVE SOME ERRORS"
1 "everything is failing" "EVERYTHING is failing"
2 "there are no errors" "System shutdown!"
Bin ich etwas mit dem replace
Teil meines Codes fehlt?
Edit:
Für zukünftige Zuschauer, hier ist der Code, den ich zu arbeiten habe:
df["col1"] = df["col1"].map(message_dict)
derzeit df.replace() wird für alle Instanzen von "col1" suchen (die Zeichenfolge, anstatt die Serie) –
Warum nicht einfach tun 'df [ "col1" ] = [cleanMessage (s) für s in df ["col1"]] '? –
@JBr, also was sollte die Syntax dann sein, wenn ich schaue, um diese Spalte zu ersetzen? 'df = df.replace (df [" col1 "], message_dict)'? – blacksite