什么是pythonic方式在R中执行dt [,y:= myfun(x),by = list(a,b,c)]?

 无极圈晨曦 发布于 2023-02-12 13:01

假设我有一个有列的数据框x, a, b, c我希望聚合a, b, c以通过函数从x列表中获取值y myfun,然后复制每个窗口/分区中所有行的值.

在R中data.table这只是一行: dt[,y:=myfun(x),by=list(a,b,c)].

在Python中,我想到的唯一方法是做这样的事情:

 # To simulate rows in a data frame
 class Record:
      def __init__(self, x, a, b, c):
           self.x = x
           self.a = a
           self.b = b
           self.c = c

 # Assume we have a list of Record as df
 mykey = attrgetter('a', 'b', 'c')
 for key, group_iter in itertools.groupby(sorted(df, key=mykey), key=mykey):
     group = list(group_iter)
     y = myfun(x.x for x in group)
     for x in group:
         x.y = y

虽然逻辑很清楚,但我并不是百分之百满意.有没有更好的方法?

我不是很熟悉pandas.在这种情况下有帮助吗?

附带问题:我的问题属于哪个类别?聚合?划分?窗口?这种模式在数据分析中经常发生,必须有一个现有的名称.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有