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

时间:2014-01-17 14:40:38

标签: python pandas apply

我想将一个带有参数的函数应用于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

1 个答案:

答案 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