我想将带有参数的函数应用于 python pandas 中的一系列:
x = my_series.apply(my_function, more_arguments_1)
y = my_series.apply(my_function, more_arguments_2)
...
The 文档 https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.apply.html描述了对 apply 方法的支持,但它不接受任何参数。是否有其他接受参数的方法?或者,我是否缺少一个简单的解决方法?
更新(2017 年 10 月):请注意,由于这个问题最初是被问到的,所以 pandasapply()
已更新为处理位置和关键字参数,上面的文档链接现在反映了这一点,并展示了如何包含任一类型的参数。
新版本的 pandasdo允许您传递额外的参数(请参阅新文档 http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.apply.html#pandas.Series.apply)。所以现在你可以这样做:
my_series.apply(your_function, args=(2,3,4), extra_kw=1)
添加位置参数after该系列的元素。
对于旧版本的 pandas:
文档清楚地解释了这一点。 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
更好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)