pythonpandasdataframefunctionapply

Apply function to each cell in DataFrame


I have a dataframe that may look like this:

A        B        C
foo      bar      foo bar
bar foo  foo      bar

I want to look through every element of each row (or every element of each column) and apply the following function to get the subsequent dataframe:

def foo_bar(x):
    return x.replace('foo', 'wow')

After applying the function, my dataframe will look like this:

A        B        C
wow      bar      wow bar
bar wow  wow      bar

Is there a simple one-liner that can apply a function to each cell?

This is a simplistic example so there may be an easier way to execute this specific example other than applying a function, but what I am really asking about is how to apply a function in every cell within a dataframe.


Solution

  • You can use map() which is concise for your case.

    df.map(foo_bar)
    
    #     A       B       C
    #0  wow     bar wow bar
    #1  bar wow wow     bar
    

    Another option is to vectorize your function and then use apply method:

    import numpy as np
    df.apply(np.vectorize(foo_bar))
    #     A       B       C
    #0  wow     bar wow bar
    #1  bar wow wow     bar