我正在尝试清理 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)
还有其他方法可以完成同样的事情吗?
Edit:
def function(string, x):
if string in x:
return 1
else:
return 0
df['newFeature'] = df['oldFeature'].apply(partial(function, 'string'))
我相信你想要functools.partial http://docs.python.org/2/library/functools.html#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"))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)