# pandas.core.groupby.DataFrameGroupBy.filter

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

  Return a copy of a DataFrame excluding elements from groups that do not satisfy the boolean criterion specified by func.

  Parameters:

  f : 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.

  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

Scroll To Top