Python Pandas: 对系列应用带参数的函数。更新

4

我想对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个回答

9

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接