pandas.core.groupby.SeriesGroupBy.diff#

SeriesGroupBy.diff(periods=1, axis=_NoDefault.no_default)[源代码]#

元素的离散差分。

计算组内每个元素与另一个元素(默认为前一行元素)的差值。

Parameters:
periodsint, 默认值 1

用于计算差值的向前(或向后)移动的周期数,接受负值。

axis要移动的轴,默认为 0

沿行(0)或列(1)计算差值。

自 2.1.0 版本弃用: 对于 axis=1,在底层对象上操作。否则 axis 关键字不是必需的。

Returns:
Series 或 DataFrame

一阶差分。

参见

Series.groupby

将函数 groupby 应用于 Series。

DataFrame.groupby

将函数 groupby 应用于 DataFrame 的每一行或每一列。

Examples

对于 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

对于 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