有没有Hadley的ddply for python的实现?

2024-05-16 07:09:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我发现Hadley的plyr包对R非常有用,它是转换数据的一个很好的DSL。is所解决的问题是如此普遍,以至于我面对的是其他用例,而不是在R中操作数据,而是在其他编程语言中。在

有人知道是否存在一个为python做类似事情的模块吗?比如:

def ddply(rows, *cols, op=lambda group_rows: group_rows):
    """group rows by cols, then apply the function op to each group
       and return the results aggregating all groups
       rows is a dict or list of values read by csv.reader or csv.DictReader"""
    pass

它应该不会太难实现,但是如果它已经存在的话就太好了。我要实现它,使用itertools.groupbycols分组,然后应用op函数,然后使用itertools.chain把一切都锁起来。有更好的解决办法吗?在


Tags: orcsvthe数据byisgroup用例
1条回答
网友
1楼 · 发布于 2024-05-16 07:09:37

这是我起草的实施方案:

def ddply(rows, cols, op=lambda group_rows: group_rows): 
    """group rows by cols, then apply the function op to each group 
    rows is list of values or dict with col names (like read from 
    csv.reader or   csv.DictReader)"""
    def group_key(row):                         
        return (row[col] for col in cols)
    rows = sorted(rows, key=group_key)
    return itertools.chain.from_iterable(
        op(group_rows) for k,group_rows in itertools.groupby(rows, key=group_key)) 

另一个步骤是有一组预定义的函数,可以作为op应用,比如sum和其他实用函数。在

相关问题 更多 >