Beispiel #1
0
def _unliftable_agg(meth):
    name, func = frame_base.name_and_func(meth)

    def wrapper(self, *args, **kargs):
        assert isinstance(self, DeferredGroupBy)
        ungrouped = self._expr.args()[0]
        post_agg = expressions.ComputedExpression(
            name,
            lambda df: func(df.groupby(level=list(range(df.index.nlevels)))),
            [ungrouped],
            requires_partition_by=partitionings.Index(),
            preserves_partition_by=partitionings.Singleton())
        return frame_base.DeferredFrame.wrap(post_agg)

    return wrapper
Beispiel #2
0
def _liftable_agg(meth):
  name, func = frame_base.name_and_func(meth)

  def wrapper(self, *args, **kargs):
    assert isinstance(self, DeferredGroupBy)
    ungrouped = self._expr.args()[0]
    pre_agg = expressions.ComputedExpression(
        'pre_combine_' + name,
        lambda df: func(df.groupby(level=list(range(df.index.nlevels)))),
        [ungrouped],
        requires_partition_by_index=False,
        preserves_partition_by_index=True)
    post_agg = expressions.ComputedExpression(
        'post_combine_' + name,
        lambda df: func(df.groupby(level=list(range(df.index.nlevels)))),
        [pre_agg],
        requires_partition_by_index=True,
        preserves_partition_by_index=True)
    return frame_base.DeferredFrame.wrap(post_agg)

  return wrapper