dask.dataframe.Series.shift
dask.dataframe.Series.shift¶
- Series.shift(periods=1, freq=None, axis=0)¶
通过可选的时间 freq 将索引按所需周期数进行移位。
此文档字符串是从 pandas.core.frame.DataFrame.shift 复制而来的。
Dask 版本可能存在一些不一致性。
当 freq 未传递时,移动索引而不重新对齐数据。如果传递了 freq`(在这种情况下,索引必须是日期或日期时间,否则将引发 `NotImplementedError),索引将使用周期和 freq 增加。当 freq 指定为 “infer” 时,只要索引中设置了 freq 或 inferred_freq 属性,就可以推断 freq。
- 参数
- 时期int 或 Sequence
要移动的周期数。可以是正数或负数。如果是一个整数的可迭代对象,数据将按每个整数移动一次。这相当于一次移动一个值并将所有结果帧连接起来。生成的列将带有移动后缀的列名。对于多个周期,轴不能是1。
- 频率DateOffset, tseries.offsets, timedelta, 或 str, 可选
从 tseries 模块或时间规则(例如 ‘EOM’)使用的偏移量。如果指定了 freq,则索引值会被移动,但数据不会重新对齐。也就是说,如果你希望在移动时扩展索引并保留原始数据,请使用 freq。如果将 freq 指定为 “infer”,则将从索引的 freq 或 inferred_freq 属性中推断出来。如果这些属性都不存在,则会抛出 ValueError。
- 轴{0 或 ‘index’, 1 或 ‘columns’, None}, 默认 None
移动方向。对于 Series,此参数未使用,默认值为 0。
- fill_value对象,可选 (在Dask中不支持)
用于新引入的缺失值的标量值。默认值取决于 self 的 dtype。对于数值数据,使用
np.nan
。对于日期时间、时间增量或周期数据等,使用NaT
。对于扩展 dtypes,使用self.dtype.na_value
。- 后缀str, 可选 (Dask 中不支持)
如果 str 和 periods 是一个可迭代对象,这将被添加到每个移位后的列名之前,并在列名之后。
- 返回
- DataFrame
复制的输入对象,已移动。
参见
Index.shift
索引的移位值
DatetimeIndex.shift
DatetimeIndex 的移位值。
PeriodIndex.shift
移动 PeriodIndex 的值。
示例
>>> df = pd.DataFrame({"Col1": [10, 20, 15, 30, 45], ... "Col2": [13, 23, 18, 33, 48], ... "Col3": [17, 27, 22, 37, 52]}, ... index=pd.date_range("2020-01-01", "2020-01-05")) >>> df Col1 Col2 Col3 2020-01-01 10 13 17 2020-01-02 20 23 27 2020-01-03 15 18 22 2020-01-04 30 33 37 2020-01-05 45 48 52
>>> df.shift(periods=3) Col1 Col2 Col3 2020-01-01 NaN NaN NaN 2020-01-02 NaN NaN NaN 2020-01-03 NaN NaN NaN 2020-01-04 10.0 13.0 17.0 2020-01-05 20.0 23.0 27.0
>>> df.shift(periods=1, axis="columns") Col1 Col2 Col3 2020-01-01 NaN 10 13 2020-01-02 NaN 20 23 2020-01-03 NaN 15 18 2020-01-04 NaN 30 33 2020-01-05 NaN 45 48
>>> df.shift(periods=3, fill_value=0) Col1 Col2 Col3 2020-01-01 0 0 0 2020-01-02 0 0 0 2020-01-03 0 0 0 2020-01-04 10 13 17 2020-01-05 20 23 27
>>> df.shift(periods=3, freq="D") Col1 Col2 Col3 2020-01-04 10 13 17 2020-01-05 20 23 27 2020-01-06 15 18 22 2020-01-07 30 33 37 2020-01-08 45 48 52
>>> df.shift(periods=3, freq="infer") Col1 Col2 Col3 2020-01-04 10 13 17 2020-01-05 20 23 27 2020-01-06 15 18 22 2020-01-07 30 33 37 2020-01-08 45 48 52
>>> df['Col1'].shift(periods=[0, 1, 2]) Col1_0 Col1_1 Col1_2 2020-01-01 10 NaN NaN 2020-01-02 20 10.0 NaN 2020-01-03 15 20.0 10.0 2020-01-04 30 15.0 20.0 2020-01-05 45 30.0 15.0