问题描述
我的函数目前的工作方式如下:
@vaex.register_function()
def abc(field) :
o = len( set(txt.str.split(' ')) )
return o
df.func.field.abc()
我希望它大致像这样工作:
@vaex.register_function()
def abc(field,arg2) :
o = len( set(txt.str.split(' ')) & set(arg2.split(' ')) )
return o
df.func.field.abc(arg2)
目前我这样做:
arg2 = ' ... '
df.apply(lambda a: abc(a,arg2),arguments=[df.field])
从我读过的内容来看,它没有经过优化,没有抖动和缓慢,因为它是从“外部”应用的
解决方法
所以我相信你正在寻找的东西是支持的。考虑以下示例:
import vaex
import vaex.ml
df = vaex.ml.datasets.load_iris()
@vaex.register_function() # check the arguments here for more options
def my_func(x,number1=1,number2=10):
return x * number1 + number2
df.sepal_length.my_func(number1=1,number2=2)
所以以上应该可以正常工作。
关于 apply
- 在 vaex 4.x 中 apply
是并行执行的。代码与您编写的一样高效。
注册功能更方便,如果你为自己的工作构建自己的模块,并用你经常使用的各种功能扩展vaex。性能将取决于编写的代码。