将函数应用于 DataFrame 中的每个单元格

Apply function to each cell in 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

是否有一种简单的单行代码可以将一个函数应用于每个单元格?

这是一个简单的示例,因此除了应用函数之外,可能还有更简单的方法来执行此特定示例,但我真正想问的是如何在数据框中的每个单元格中应用函数。

您可以使用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

我想你可以使用 np.vectorize:

>>> df[:] = np.vectorize(foo_bar)(df)
>>> df
       A    B    C
foo  bar  wow  bar
bar  wow  wow  bar
>>> 

这可能会更快,因为它使用 numpy