小编典典

python pandas:将带有参数的函数应用于系列

all

我想将一个带参数的函数应用于 python pandas 中的系列:

x = my_series.apply(my_function, more_arguments_1)
y = my_series.apply(my_function, more_arguments_2)
...

文档描述了对 apply
方法的支持,但它不接受任何参数。是否有不同的方法可以接受参数?或者,我是否缺少一个简单的解决方法?

更新(2017 年 10 月):
请注意,由于最初提出此问题,pandasapply()已更新为处理位置和关键字参数,上面的文档链接现在反映了这一点,并显示了如何包含任何一种类型的参数。


阅读 63

收藏
2022-06-20

共1个答案

小编典典

较新版本的 pandas 确实 允许您传递额外的参数(请参阅新文档)。所以现在你可以这样做:

my_series.apply(your_function, args=(2,3,4), extra_kw=1)

位置参数添加 系列元素之后。


对于旧版本的熊猫:

文档清楚地解释了这一点。apply 方法接受一个 python
函数,该函数应该有一个参数。如果您想传递更多参数,您应该functools.partial按照 Joel Cornett 在他的评论中的建议使用。

一个例子:

>>> import functools
>>> import operator
>>> add_3 = functools.partial(operator.add,3)
>>> add_3(2)
5
>>> add_3(7)
10

您还可以使用 传递关键字参数partial

另一种方法是创建一个 lambda:

my_series.apply((lambda x: your_func(a,b,c,d,...,x)))

但我认为使用partial更好。

2022-06-20