0

有没有办法用额外的参数定义一个函数?

我的功能目前以下列方式工作:

@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])

从我读过的内容来看,它没有优化,没有抖动和缓慢,因为它是从“外部”应用的

4

1 回答 1

0

所以我相信你正在寻找的东西得到支持。考虑这个例子:

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.xapply中并行执行。代码和你做的一样高效。

注册功能更方便,如果您为自己的工作构建自己的模块,并使用您经常使用的各种功能扩展 vaex。性能将取决于编写的代码。

于 2021-06-13T20:41:03.703 回答