featuretools.primitives.make_agg_primitive(function, input_types, return_type, name=None, stack_on_self=True, stack_on=None, stack_on_exclude=None, base_of=None, base_of_exclude=None, description=None, cls_attributes=None, uses_calc_time=False, default_value=None, commutative=False, number_output_features=1)[source]

Returns a new aggregation primitive class. The primitive infers default values by passing in empty data.

  • function (function) – Function that takes in a series and applies some transformation to it.

  • input_types (list[Variable]) – Variable types of the inputs.

  • return_type (Variable) – Variable type of return.

  • name (str) – Name of the function. If no name is provided, the name of function will be used.

  • stack_on_self (bool) – Whether this primitive can be in input_types of self.

  • stack_on (list[PrimitiveBase]) – Whitelist of primitives that can be input_types.

  • stack_on_exclude (list[PrimitiveBase]) – Blacklist of primitives that cannot be input_types.

  • base_of (list[PrimitiveBase) – Whitelist of primitives that can have this primitive in input_types.

  • base_of_exclude (list[PrimitiveBase]) – Blacklist of primitives that cannot have this primitive in input_types.

  • description (str) – Description of primitive.

  • cls_attributes (dict[str -> anytype]) – Custom attributes to be added to class. Key is attribute name, value is the attribute value.

  • uses_calc_time (bool) – If True, the cutoff time the feature is being calculated at will be passed to the function as the keyword argument ‘time’.

  • default_value (Variable) – Default value when creating the primitive to avoid the inference step. If no default value if provided, the inference happen.

  • commutative (bool) – If True, will only make one feature per unique set of base features.

  • number_output_features (int) – The number of output features (columns in the matrix) associated with this feature.


In [1]: from featuretools.primitives import make_agg_primitive

In [2]: from featuretools.variable_types import DatetimeTimeIndex, Numeric

In [3]: def time_since_last(values, time=None):
   ...:     time_since = time - values.iloc[-1]
   ...:     return time_since.total_seconds()

In [4]: TimeSinceLast = make_agg_primitive(
   ...:     function=time_since_last,
   ...:     input_types=[DatetimeTimeIndex],
   ...:     return_type=Numeric,
   ...:     description="Time since last related instance",
   ...:     uses_calc_time=True)