Tengo un marco de datos que puede verse así:
A B C
foo bar foo bar
bar foo foo bar
Quiero mirar a través de cada elemento de cada fila (o cada elemento de cada columna) y aplicar la siguiente función para obtener el DF subsiguiente:
def foo_bar(x):
return x.replace('foo', 'wow')
A B C
wow bar wow bar
bar wow wow bar
¿Existe una línea simple que pueda aplicar una función a cada celda?
Este es un ejemplo simplista, por lo que puede haber una forma más fácil de ejecutar este ejemplo específico además de aplicar una función, pero lo que realmente estoy preguntando es cómo aplicar una función en cada celda dentro de un marco de datos.
Respuestas:
Puede usar lo
applymap()
que sea conciso para su caso.df.applymap(foo_bar) # A B C #0 wow bar wow bar #1 bar wow wow bar
Otra opción es vectorizar su función y luego usar el
apply
método:import numpy as np df.apply(np.vectorize(foo_bar)) # A B C #0 wow bar wow bar #1 bar wow wow bar
fuente
import numpy as np; df.apply(np.vectorize(iseven))
df.applymap(iseven)
pero tenga en cuenta que se volverá muy lento para DataFrames más grandes, así que siempre que tenga la oportunidad, use los métodos vectorizados.