首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数来创建具有多列的df。

函数来创建具有多列的df。
EN

Stack Overflow用户
提问于 2022-07-18 16:12:18
回答 1查看 21关注 0票数 0

我使用groupby从另一个df创建了一个新的df,如下所示:

代码语言:javascript
复制
weekly_by_user = \
df.groupby('week','user_id') \
.agg( \
    count('order_id').alias('total_orders'), \
    sum('gmv').alias('gmv'), \
    countDistinct('buyer_id').alias('dcnt_buyers'))

我的期望是创建一个可以传递所有3列(order_id、gmv、buyer_id)和3个函数(计数、和、countDistinct)的函数,并返回与上面的查询相同的输出。

对于1 col,它可以通过创建一个函数来完成:

代码语言:javascript
复制
def df_new(df, cols, func, new_col_name):
    for col in cols:
        df_new = df.groupby('week','user_id') \
    .agg(func(col).alias(new_col_name))
    return df_new

然后跑到第一个像:

代码语言:javascript
复制
total_orders = df_groupby(df, 'order_id', count, 'total_orders')

但是我不知道如何申请所有3所学校的1项功能。有人能提出解决办法吗?

提亚

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-18 16:29:04

试试这个:

代码语言:javascript
复制
def df_new(df, cols, funcs, new_col_names):
  df_new = (
    df
    .groupby('week', 'user_id')
    .agg(*[func(cols[index]).alias(new_col_names[index]) for index, func in enumerate(funcs)])
  )

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

https://stackoverflow.com/questions/73025443

复制
相关文章

相似问题

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