gpt4 book ai didi

python - 是否有 Hadley 的 ddply 用于 python 的实现?

转载 作者:太空狗 更新时间:2023-10-29 17:19:59 26 4
gpt4 key购买 nike

我找到了 Hadley 的 plyr R 的包非常有帮助,它是用于转换数据的出色 DSL。解决的问题非常普遍,以至于我在其他用例中遇到了它,不是在 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将其全部链接起来。有更好的解决方案吗?

最佳答案

这是我起草的实现:

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 和其他实用函数。

关于python - 是否有 Hadley 的 ddply 用于 python 的实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6434048/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com