J'ai un dataframe qui peut ressembler à ceci:
A B C
foo bar foo bar
bar foo foo bar
Je veux parcourir chaque élément de chaque ligne (ou chaque élément de chaque colonne) et appliquer la fonction suivante pour obtenir le DF suivant:
def foo_bar(x):
return x.replace('foo', 'wow')
A B C
wow bar wow bar
bar wow wow bar
Existe-t-il un simple one-liner qui peut appliquer une fonction à chaque cellule?
Il s'agit d'un exemple simpliste, il peut donc y avoir un moyen plus simple d'exécuter cet exemple spécifique autre que l'application d'une fonction, mais ce que je demande vraiment, c'est comment appliquer une fonction dans chaque cellule d'un dataframe.
Réponses:
Vous pouvez utiliser
applymap()
ce qui est concis pour votre cas.df.applymap(foo_bar) # A B C #0 wow bar wow bar #1 bar wow wow bar
Une autre option consiste à vectoriser votre fonction puis à utiliser la
apply
méthode:import numpy as np df.apply(np.vectorize(foo_bar)) # A B C #0 wow bar wow bar #1 bar wow wow bar
la source
import numpy as np; df.apply(np.vectorize(iseven))
df.applymap(iseven)
mais notez que cela deviendra très lent pour les DataFrames plus volumineux, donc chaque fois que vous en aurez l'occasion, utilisez les méthodes vectorisées.