问题描述
我想对熊猫系列应用带有参数的函数:我发现了两种不同的SO解决方案:
I would like to apply a function with argument to a pandas series: I have found two different solution of SO:
和
都依赖于functool.partial
的使用,并且它们绝对可以正常工作.顺便说一下,新版本的Pandas支持多种论点:无论如何,我都不知道它是如何工作的.示例:
both of them rely on the use of functool.partial
and they works absolutely fine. By the way the new version of Pandas support multiple argument: in any case I do not understand how does it works. Example:
a=pd.DataFrame({'x':[1,2],'y':[10,20]})
a['x'].apply(lambda x,y: x+y, args=(100))
它退出并显示:
TypeError: <lambda>() argument after * must be a sequence, not int
推荐答案
TypeError
表示您将错误的类型传递给lambda
函数x + y
.期望args
是一个序列,但是得到了int
.您可能以为(100)
是一个元组(一个序列),但是在python中,逗号是一个元组:
The TypeError
is saying that you passed the wrong type to the lambda
function x + y
. It's expecting the args
to be a sequence, but it got an int
. You may have thought that (100)
was a tuple (a sequence), but in python it's the comma that makes a tuple:
In [10]: type((100))
Out[10]: int
In [11]: type((100,))
Out[11]: tuple
因此将您的最后一行更改为
So change your last line to
In [12]: a['x'].apply(lambda x, y: x + y, args=(100,))
Out[12]:
0 101
1 102
Name: x, dtype: int64
这篇关于python pandas:将带有参数的函数应用于系列.更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!