我正在 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(使用前将#替换为@)