# pandas.core.groupby.DataFrameGroupBy.filter

DataFrameGroupBy.filter(func, dropna=True, *args, **kwargs)

  Return a copy of a DataFrame excluding filtered elements.

  Elements from groups are filtered if they do not satisfy the boolean criterion specified by func.

  Parameters
    func function

      Function to apply to each subframe. Should return True or False.

    dropna Drop groups that do not pass the filter. True by default;

      If False, groups that evaluate False are filled with NaNs.

  Returns
    filtered DataFrame

  Notes

  Each subframe is endowed the attribute ‘name’ in case you need to know which group you are working on.

  Functions that mutate the passed object can produce unexpected behavior or errors and are not supported. See Mutating with User Defined Function (UDF) methods for more details.

  Examples

      >>> df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
      ...                           'foo', 'bar'],
      ...                    'B' : [1, 2, 3, 4, 5, 6],
      ...                    'C' : [2.0, 5., 8., 1., 2., 9.]})
      >>> grouped = df.groupby('A')
      >>> grouped.filter(lambda x: x['B'].mean() > 3.)
           A  B    C
      1  bar  2  5.0
      3  bar  4  1.0
      5  bar  6  9.0