将函数应用于 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
。
我有一个可能如下所示的数据框:
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
。