我有一个 Dataframe ,可能看起来像这样:
A B C
foo bar foo bar
bar foo foo bar
我想查看每行的每个元素(或每列的每个元素),并应用以下函数来获取后续 Dataframe :
def foo_bar(x):
return x.replace('foo', 'wow')
应用函数后, Dataframe 将如下所示:
A B C
wow bar wow bar
bar wow wow bar
是否有一个简单的一行程序可以对每个单元格应用一个函数?
这是一个过于简单的例子,所以除了应用函数之外,可能还有更简单的方法来执行这个特定的例子,但我真正想问的是如何在 Dataframe 内的每个单元格中应用函数。
3条答案
按热度按时间az31mfrm1#
您可以使用
applymap()
,这对于您的情况来说是简洁的。另一种选择是将函数矢量化,然后使用
apply
方法:hfwmuf9z2#
我想您可以使用
np.vectorize
:这可能会更快,因为它使用的是
numpy
。t0ybt7op3#
在Psidom's answer上展开,如果您定义的函数接受额外的参数,那么您可以使用kwargs传递它们。例如,要在OP中切换
repl
或foo_bar()
:字符串操作是
applymap
特别有用的常见情况之一(如OP中)。由于panda中的字符串操作没有经过优化,因此循环通常比矢量化操作执行得更好,尤其是在有许多操作的情况下。例如,对于以下使用条件替换帧中的值的简单任务,applymap
比等效的矢量化panda代码快3倍以上。