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.shiftIndex 的移位值。
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