pandas.core.groupby.SeriesGroupBy.shift #

系列分组依据。shift ( period = 1 , freq = None , axis = _NoDefault.no_default , fill_value = _NoDefault.no_default , suffix = None ) [来源] #

按周期观察移动每组。

如果传递 freq,则将使用周期和频率增加索引。

参数
周期int |序列[int],默认1

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

freq str,可选

频率字符串。

axis轴要平移,默认0

改变方向。

自版本 2.1.0 起已弃用:对于 axis=1,改为对基础对象进行操作。否则,axis 关键字不是必需的。

fill_value可选

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

版本 2.1.0 中已更改:也会引发ValueErroriffreq也提供。

后缀str,可选

如果有多个句点,则添加到每个移位列的字符串。否则忽略。

返回
系列或数据框

对象在每组内移动。

也可以看看

Index.shift

索引的移位值。

例子

对于系列分组依据:

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