注册带有附加参数的函数?

问题描述

有没有办法定义一个带有附加参数的函数

我的函数目前的工作方式如下:

@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。性能将取决于编写的代码。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...