Я нахожу пакет 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.groupby
для группировки по cols
, затем применил функцию op
, а затем использовал itertools.chain, чтобы связать его все до. Есть ли лучшее решение?