为什么 pandas apply 会计算两次

2023-11-27

我正在 panda 的 DataFrame 对象上使用 apply 方法。当我的 DataFrame 有一个列时,应用的函数似乎被调用了两次。问题是为什么?而且,我可以阻止这种行为吗?

Code:

import pandas as pd

def mul2(x):
    print ('hello')
    return 2*x

df = pd.DataFrame({'a': [1,2,0.67,1.34]})
df.apply(mul2)

Output:

hello
hello

0  2.00
1  4.00
2  1.34
3  2.68

我正在从正在应用的函数中打印“hello”。我知道它被应用了两次,因为“hello”打印了两次。更重要的是,如果我有两列,“hello”会打印 3 次。更糟糕的是,当我调用“hello”列时,它打印了 4 次。

Code:

df.a.apply(mul2)

Output:

hello
hello
hello
hello
0    2.00
1    4.00
2    1.34
3    2.68
Name: a, dtype: float64

此行为旨在作为一种优化。

See the docs:

在当前的实现中,apply 在第一次调用 func 两次 列/行来决定是否可以采用快速或慢速代码路径。 如果 func 有副作用,这可能会导致意外的行为,因为它们 对第一列/第一行生效两次。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 pandas apply 会计算两次 的相关文章

随机推荐