对 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

是否有一个简单的一行程序可以对每个单元格应用函数?

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

121998 次浏览

你可以使用简明的 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