Skip to main content
`Ctrl`+`K`

# pandas.core.groupby.DataFrameGroupBy.diff

DataFrameGroupBy.diff(periods=1, axis=<no_default>)

  First discrete difference of element.

  Calculates the difference of each element compared with another element in the group (default is element in previous row).

  Parameters:
    periods int, default 1

      Periods to shift for calculating difference, accepts negative values.

    axis axis to shift, default 0

      Take difference over rows (0) or columns (1).

      Deprecated since version 2.1.0: For axis=1, operate on the underlying object instead. Otherwise the axis keyword is not necessary.

  Returns:
    Series or DataFrame

      First differences.

  See also

  `Series.groupby`

    Apply a function groupby to a Series.

  `DataFrame.groupby`

    Apply a function groupby to each row or column of a DataFrame.

  Examples

  For SeriesGroupBy:

      >>> lst = ['a', 'a', 'a', 'b', 'b', 'b']
      >>> ser = pd.Series([7, 2, 8, 4, 3, 3], index=lst)
      >>> ser
      a     7
      a     2
      a     8
      b     4
      b     3
      b     3
      dtype: int64
      >>> ser.groupby(level=0).diff()
      a    NaN
      a   -5.0
      a    6.0
      b    NaN
      b   -1.0
      b    0.0
      dtype: float64

  For DataFrameGroupBy:

      >>> data = {'a': [1, 3, 5, 7, 7, 8, 3], 'b': [1, 4, 8, 4, 4, 2, 1]}
      >>> df = pd.DataFrame(data, index=['dog', 'dog', 'dog',
      ...                   'mouse', 'mouse', 'mouse', 'mouse'])
      >>> df
               a  b
        dog    1  1
        dog    3  4
        dog    5  8
      mouse    7  4
      mouse    7  4
      mouse    8  2
      mouse    3  1
      >>> df.groupby(level=0).diff()
               a    b
        dog  NaN  NaN
        dog  2.0  3.0
        dog  2.0  4.0
      mouse  NaN  NaN
      mouse  0.0  0.0
      mouse  1.0 -2.0
      mouse -5.0 -1.0