python pandas:将一个带参数的函数应用于一个系列.更新

use*_*577 4 python apply pandas

我想将一个带有参数的函数应用于pandas系列:我找到了两种不同的SO解决方案:

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

传递多个参数以应用(Python)

他们都依赖于使用,functool.partial他们的工作绝对正常.顺便说一句,新版本的Pandas支持多个论点:无论如何我不明白它是如何工作的.例:

a=pd.DataFrame({'x':[1,2],'y':[10,20]})
a['x'].apply(lambda x,y: x+y, args=(100))
Run Code Online (Sandbox Code Playgroud)

它退出时带有:

TypeError: <lambda>() argument after * must be a sequence, not int
Run Code Online (Sandbox Code Playgroud)

Tom*_*ger 8

TypeError是说你把错误的类型传递给了lambda函数x + y.它期待args成为一个序列,但它有一个int.您可能认为这(100)是一个元组(一个序列),但在python中它是一个逗号构成一个元组:

In [10]: type((100))
Out[10]: int

In [11]: type((100,))
Out[11]: tuple
Run Code Online (Sandbox Code Playgroud)

所以改变你的最后一行

In [12]: a['x'].apply(lambda x, y: x + y, args=(100,))
Out[12]: 
0    101
1    102
Name: x, dtype: int64
Run Code Online (Sandbox Code Playgroud)