pandas.core.groupby.SeriesGroupBy.shift#

SeriesGroupBy.shift(periods=1, freq=None, axis=_NoDefault.no_default, fill_value=_NoDefault.no_default, suffix=None)[源代码]#

将每个组移动几个观测值。

如果提供了 freq,索引将使用 periods 和 freq 增加。

Parameters:
periodsint | Sequence[int], default 1

要移动的周期数。如果是一个值列表,则每个组移动每个周期。

freqbool, default False

频率字符串。

axis要移动的轴,默认为 0

移动方向。

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

fill_valueoptional

用于引入新缺失值标量值。

在 2.1.0 版本发生变更: 如果提供了 freq,则会引发 ValueError

suffixbool, default False

当有多个周期时,添加到每个已移动列的字符串。否则将被忽略。

Returns:
Series 或 DataFrame

在每个组内移动的对象。

参见

Index.shift

Index 的移位值。

Examples

对于 SeriesGroupBy:

>>> lst = ['a', 'a', 'b', 'b']
>>> ser = pd.Series([1, 2, 3, 4], index=lst)
>>> ser
a    1
a    2
b    3
b    4
dtype: int64
>>> ser.groupby(level=0).shift(1)
a    NaN
a    1.0
b    NaN
b    3.0
dtype: float64

对于 DataFrameGroupBy:

>>> data = [[1, 2, 3], [1, 5, 6], [2, 5, 8], [2, 6, 9]]
>>> df = pd.DataFrame(data, columns=["a", "b", "c"],
...                   index=["tuna", "salmon", "catfish", "goldfish"])
>>> df
           a  b  c
    tuna   1  2  3
  salmon   1  5  6
 catfish   2  5  8
goldfish   2  6  9
>>> df.groupby("a").shift(1)
              b    c
    tuna    NaN  NaN
  salmon    2.0  3.0
 catfish    NaN  NaN
goldfish    5.0  8.0