我想将一个带有参数的函数应用于pandas系列:我找到了两种不同的SO解决方案:
python pandas: apply a function with arguments to a series
和
Passing multiple arguments to apply (Python)
他们都依赖于functool.partial
的使用,他们的工作非常好。顺便说一句,新版本的Pandas支持多个论点:无论如何我不明白它是如何工作的。例如:
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
答案 0 :(得分:8)
TypeError
表示您将错误的类型传递给lambda
函数x + y
。它期望args
是一个序列,但它有一个int
。你可能认为(100)
是一个元组(一个序列),但是在python中它是一个逗号构成一个元组:
In [10]: type((100))
Out[10]: int
In [11]: type((100,))
Out[11]: tuple
所以将你的最后一行改为
In [12]: a['x'].apply(lambda x, y: x + y, args=(100,))
Out[12]:
0 101
1 102
Name: x, dtype: int64