Ich habe einen Datenrahmen, der folgendermaßen aussehen könnte:
A B C
foo bar foo bar
bar foo foo bar
Ich möchte jedes Element jeder Zeile (oder jedes Element jeder Spalte) durchsehen und die folgende Funktion anwenden, um den nachfolgenden DF zu erhalten:
def foo_bar(x):
return x.replace('foo', 'wow')
A B C
wow bar wow bar
bar wow wow bar
Gibt es einen einfachen Einzeiler, der jeder Zelle eine Funktion zuweisen kann?
Dies ist ein vereinfachtes Beispiel, daher gibt es möglicherweise eine einfachere Möglichkeit, dieses spezielle Beispiel auszuführen, als eine Funktion anzuwenden. Ich frage jedoch wirklich, wie eine Funktion in jeder Zelle innerhalb eines Datenrahmens angewendet werden kann.
Antworten:
Sie können verwenden,
applymap()
was für Ihren Fall prägnant ist.df.applymap(foo_bar) # A B C #0 wow bar wow bar #1 bar wow wow bar
Eine andere Möglichkeit besteht darin, Ihre Funktion zu vektorisieren und dann die folgende
apply
Methode zu verwenden:import numpy as np df.apply(np.vectorize(foo_bar)) # A B C #0 wow bar wow bar #1 bar wow wow bar
quelle
import numpy as np; df.apply(np.vectorize(iseven))
df.applymap(iseven)
aber beachten Sie, dass es für größere DataFrames sehr langsam wird. Verwenden Sie daher immer die vektorisierten Methoden, wenn Sie die Möglichkeit dazu haben.