python:将带参数的函数应用于序列

我想将带有参数的函数应用于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

例如:

&gt&燃气轮机&燃气轮机;导入功能工具
&燃气轮机&燃气轮机&燃气轮机;进口经营者
&燃气轮机&燃气轮机&燃气轮机;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更好

发表评论