Eu tenho um dataframe que pode ser parecido com este:
A B C
foo bar foo bar
bar foo foo bar
Quero examinar cada elemento de cada linha (ou cada elemento de cada coluna) e aplicar a seguinte função para obter o DF subsequente:
def foo_bar(x):
return x.replace('foo', 'wow')
A B C
wow bar wow bar
bar wow wow bar
Existe uma linha simples que pode aplicar uma função a cada célula?
Este é um exemplo simplista, então pode haver uma maneira mais fácil de executar este exemplo específico diferente de aplicar uma função, mas o que realmente estou perguntando é como aplicar uma função em cada célula dentro de um dataframe.
Respostas:
Você pode usar o
applymap()
que é conciso para o seu caso.df.applymap(foo_bar) # A B C #0 wow bar wow bar #1 bar wow wow bar
Outra opção é vetorizar sua função e, em seguida, usar o
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
fonte
import numpy as np; df.apply(np.vectorize(iseven))
df.applymap(iseven)
mas observe que ficará muito lento para DataFrames maiores, então, sempre que tiver a chance, use os métodos vetorizados.