我在熊猫的DataFrame对象上使用apply方法.当我的DataFrame有一个列时,看起来应用函数被调用两次.问题是为什么?而且,我可以阻止这种行为吗?
码:
import pandas as pd
def mul2(x):
print 'hello'
return 2*x
df = pd.DataFrame({'a': [1,2,0.67,1.34]})
print df.apply(mul2)
输出:
hello
hello
0 2.00
1 4.00
2 1.34
3 2.68
我正在应用的函数中打印’hello’.我知道它被应用了两次因为’你好’打印了两次.更重要的是,如果我有两列,’你好’打印3次.更进一步的是当我打电话给’hello’列打印4次时.
码:
print df.a.apply(mul2)
输出:
hello
hello
hello
hello
0 2.00
1 4.00
2 1.34
3 2.68
Name: a, dtype: float64
解决方法:
可能与this issue相关.使用groupby,应用函数被称为一次额外的时间,以查看是否可以进行某些优化.我猜这里发生了类似的事情.目前看起来并没有任何办法(虽然我对你所看到的行为的来源可能是错的).有没有理由你需要它不要做那个额外的电话.
此外,当您在列上应用时调用它是正常的.获得一个列时,您将获得一个系列,而不是一个DataFrame.应用于系列将函数应用于每个元素.由于您的列中包含四个元素,因此该函数被调用四次.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。