我正在尝试清理Python中的一些代码,以向量化一组功能,我想知道是否有一个好方法来使用apply来传递多个参数。考虑以下内容(当前版本):
def function_1(x):
if "string" in x:
return 1
else:
return 0
df['newFeature'] = df['oldFeature'].apply(function_1)
有了上面的内容,我必须编写一个新函数(function_1、function_2等)来测试我想要查找的每个子串"string"
。在理想情况下,我可以将所有这些冗余函数组合在一起,并使用以下内容:
def function(x, string):
if string in x:
return 1
else:
return 0
df['newFeature'] = df['existingFeature'].apply(function("string"))
但是尝试返回错误TypeError: function() takes exactly 2 arguments (1 given)
,有没有其他方法可以完成同样的事情?
编辑:
def function(string, x):
if string in x:
return 1
else:
return 0
df['newFeature'] = df['oldFeature'].apply(partial(function, 'string'))
发布于 2013-10-02 23:01:47
我相信你想要functools.partial
。演示:
>>> from functools import partial
>>> def mult(a, b):
... return a * b
...
>>> doubler = partial(mult, 2)
>>> doubler(4)
8
在您的例子中,您需要在function
中交换参数(由于partial
的思想),然后只需
df['existingFeature'].apply(partial(function, "string"))
https://stackoverflow.com/questions/19140035
复制相似问题