我想将带有参数的函数应用于python中的一个系列:
x=my\u series.apply(my\u函数,更多参数\u 1)
y=my_series.apply(my_函数,更多参数)
...
文档描述了对apply方法的支持,但它不接受任何参数。是否有接受参数的不同方法?或者,我是否缺少一个简单的解决方法
更新(2017年10月):请注意,由于最初提出了这个问题,pandasapply()已经更新,以处理位置参数和关键字参数,上面的文档链接现在反映了这一点,并显示了如何包含任何类型的参数
新版本的pandasdo允许您传递额外的参数(请参阅新文档)。现在你可以做:
my_series.apply(您的_函数,args=(2,3,4),额外的_kw=1)
位置参数添加到序列的元素之后
对于较旧版本的熊猫:
文档对此进行了清楚的解释。apply方法接受一个python函数,该函数应该只有一个参数。如果要传递更多参数,应使用Joel Cornett在其评论中建议的functools.partial
例如:
>&燃气轮机&燃气轮机;导入功能工具
&燃气轮机&燃气轮机&燃气轮机;进口经营者
&燃气轮机&燃气轮机&燃气轮机;add_3=functools.partial(operator.add,3)
&燃气轮机&燃气轮机&燃气轮机;加3(2)
5.
&燃气轮机&燃气轮机&燃气轮机;加3(7)
10
您还可以使用partial传递关键字参数
另一种方法是创建lambda:
my_series.apply((lambda x:your_func(a,b,c,d,…,x)))
但我认为使用partial更好