Применить функцию к каждой ячейке в DataFrame

У меня есть dataframe, который может выглядеть так:

A        B        C
foo      bar      foo bar
bar foo  foo      bar

Я хочу просмотреть каждый элемент каждой строки (или каждый элемент каждого столбца) и применить следующую функцию для получения следующего DF:

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

A        B        C
wow      bar      wow bar
bar wow  wow      bar

Есть ли простой однострочный вкладыш, который может применять функцию к каждой ячейке?

Это упрощенный пример, так что может быть более простой способ выполнить этот конкретный пример, кроме применения функции, но то, о чем я действительно спрашиваю, - это как применить функцию в каждой ячейке в фреймворке данных.

Ответ 1

Вы можете использовать applymap() который является кратким для вашего дела.

df.applymap(foo_bar)

#     A       B       C
#0  wow     bar wow bar
#1  bar wow wow     bar

Другим вариантом является векторизация вашей функции, а затем использование метода apply:

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