# pandas.core.groupby.GroupBy.apply

`GroupBy.``apply`(func, *args, **kwargs)

  Apply function and combine results together in an intelligent way. The split-apply-combine combination rules attempt to be as common sense based as possible. For example:

  case 1: group DataFrame apply aggregation function (f(chunk) -> Series) yield DataFrame, with group axis having group labels

  case 2: group DataFrame apply transform function ((f(chunk) -> DataFrame with same indexes) yield DataFrame with resulting chunks glued together

  case 3: group Series apply function with f(chunk) -> DataFrame yield DataFrame with result of chunks glued together

  Parameters: | func : function
  Returns: | applied : type depending on grouped object and function

  See also

  `aggregate`, `transform`

  Notes

  See online documentation for full exposition on how to use apply.

  In the current implementation apply calls func twice on the first group to decide whether it can take a fast or slow code path. This can lead to unexpected behavior if func has side-effects, as they will take effect twice for the first group.