假设我有一个有列的数据框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
.在这种情况下有帮助吗?
附带问题:我的问题属于哪个类别?聚合?划分?窗口?这种模式在数据分析中经常发生,必须有一个现有的名称.