首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vaex函数中的意外输出

Vaex函数中的意外输出
EN

Stack Overflow用户
提问于 2022-06-28 23:32:11
回答 1查看 42关注 0票数 0

我有如下的Vaex函数:

代码语言:javascript
复制
@vaex.register_function(on_expression=True)
def getSumStatsByGroup(df, group, x):
    data = (df.groupby(by=group, agg={'Min' : vaex.agg.min(df[x]), 'Mean' : vaex.agg.mean(df[x]), 'Max' : vaex.agg.max(df[x]),
                              'Variance' : vaex.agg.var(df[x])}))
    return data

尽管每次运行它,我都会得到非常混乱的数据,如下所示:

代码语言:javascript
复制
 File <unknown>:2
    0           AR              2020-12-06 00:00:00.000000000  AR              Argentina       AR                    ARG                   0                    2176.0           150.0           1489103.0               43125.0                3699476.0            nan                       nan                              nan                             nan                                    nan                               nan                                      44938712.0    19523766.0         20593330.0           3599141.0           41339571.0          16.515                0.825                    

虽然,当我手动填写参数时:

代码语言:javascript
复制
df.groupby(by='country_name', agg={'Min' : vaex.agg.min(df['new_confirmed']), 'Mean' : vaex.agg.mean(df['new_confirmed']), 'Max' : vaex.agg.max(df['new_confirmed']),
                              'Variance' : vaex.agg.var(df['new_confirmed'])})

输出结果和预期的一样。我尝试过将返回值转换为熊猫数据格式,调用它上的print(),将其更改为on_expression=False,去掉函数中的返回关键字,但每次都得到完全相同的结果。我在jupyter笔记本上运行这个程序,并且非常困惑为什么它在手动填充参数时工作,而不是使用Vaex函数。任何帮助或解释都是非常有用的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-01 16:11:29

我认为您误解了@register_function装饰器的工作原理及其预期用途。

装饰器在dataframe上每一行应用函数。预期参数是一个或多个列/表达式或常量。然后,该函数将接受一行数据,并对其进行评估并返回结果。函数应该返回一个值(一个示例、int、string,甚至可能是一个列表,或者一个numpy数组,我认为这些结构中有一些是由vaex支持的)。基本上,输出应该是一个vaex表达式(而groupby不适合这个表达式,因为它的输出是一个dataframe)。

这是有用的,因为vaex将运行这个核心外,并并行,所以你会得到一些加速。在某种程度上,它类似于apply,但其思想是,对于特定的项目,您可以构建自己的内部扩展,以完全满足您的需要。

我希望我的解释有点道理。我认为@register_functiion应该在保险库上有更好的记录。无论如何,这里是一个链接到文档

也许对于您的usecase (如果我正确理解的话),您可能想看看定制的数据存取器

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72794222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档