首页 > 解决方案 > 将所有可接受的字符串参数获取到 DataFrameGroupby.aggregate

问题描述

所以,我有一段代码,它接受一个 groupby 对象和一个字典,将 groupby 中的列映射到字符串,指示聚合类型。我想验证字典中的所有值都是 pandas 在其聚合中接受的字符串。但是,我不想使用 try/except (没有循环,只会捕获一个问题值)。我该怎么做呢?

我已经尝试从 pandas.core.generic 导入 SelectionMixin 并检查 SelectionMixin._cython_table 中的值,但这显然不是一个详尽的列表。我的熊猫版本是 0.20.3。

这是我想如何使用它的示例

class SomeModule:

    ALLOWED_AGGREGATIONS = # this is where I would save the collection of allowed values

    @classmethod
    def aggregate(cls, df, groupby_cols, aggregation_dict):
        disallowed_aggregations = list(
            set(aggregation_dict.values) - set(cls.ALLOWED_AGGREGATIONS)
        )
        if len(disallowed_aggregations):
            val_str = ', '.join(disallowed_aggregations)
            raise ValueError(
                f'Unallowed aggregations found: {val_str}'
            )
        return df.groupby(groupby_cols).agg(aggregation_dict)

标签: python-3.xpandas

解决方案


推荐阅读