use*_*577 4 python apply pandas
我想将一个带有参数的函数应用于pandas系列:我找到了两种不同的SO解决方案:
python pandas:将一个带参数的函数应用于一个系列
和
他们都依赖于使用,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)
这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)
| 归档时间: |
|
| 查看次数: |
7444 次 |
| 最近记录: |