def aggregate(*args):
if args and isinstance(args[<NUM_LIT:0>], dataframe.DataFrame):<EOL><INDENT>return args[<NUM_LIT:0>].aggregate(args[<NUM_LIT:1>], args[<NUM_LIT:2>], *args[<NUM_LIT:3>:])<EOL><DEDENT>elif not args:<EOL><INDENT>raise ValueError("<STR_LIT>")<EOL><DEDENT>else:<EOL><INDENT>return pipeable.Pipeable(pipeable.PipingMethod.AGGREGATE, *args)<EOL><DEDENT>
Pipeable aggregation method.

Takes either 
 - a dataframe and a tuple of arguments required for aggregation,
 - a tuple of arguments if a dataframe has already been piped into.
In any case one argument has to be a class that extends callable.

:Example:

aggregate(dataframe, Function, "new_col_name", "old_col_name")

:Example:

dataframe >> aggregate(Function, "new_col_name", "old_col_name")

:param args: tuple of arguments
:type args: tuple
:return: returns a dataframe object
:rtype: DataFrame