pandas.core.groupby.DataFrameGroupBy.shift#
- DataFrameGroupBy.shift(periods=1, freq=None, fill_value=<no_default>, suffix=None)[源代码]#
将每个组按周期观察值进行移位。
如果传递了 freq,索引将使用周期和 freq 增加。
- 参数:
- periodsint | Sequence[int], 默认值 1
要移动的周期数。如果是值列表,则每个组按每个周期移动。
- freqstr, 可选
频率字符串。
- fill_value可选的
用于新引入的缺失值的标量值。
在 2.1.0 版本发生变更: 如果提供了
freq
,将引发ValueError
。- 后缀str, 可选
如果有多个周期,则在每个移位列中添加一个字符串。否则忽略。
- 返回:
- Series 或 DataFrame
对象在每个组内移动。
参见
Index.shift
索引的移位值
例子
对于 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