DataFrame.shift(periods=1, freq=None, axis=0, fill_value=None) [source]
用一个可选的时间频率按所需的周期数移动索引。
当频率未通过时,在不重新排列数据的情况下移动索引。如果频率通过(在这种情况下,指数一定日期或日期时间,或将提高NotImplementedError
),该指数将会增加使用时间和freq
.频率时可以推断出指定为“infer”
只要频率或inferred_freq
属性设置在索引中。
参数: | periods: 要转换的周期数。可以是正数或负数。 freq : timedelta或str(可选) 从 如果指定了 也就是说,如果您想在移位时扩展索引并保留原始数据, 请使用 则将从索引的 如果这些属性都不存在,则会引发 axis: 默认为 转变(Shift)方向。 fill_value: 用于新引入的缺失值的标量值。默认值取决于 对于数字数据, 时间增量或期间数据等
在1.1.0版中更改。用于新引入的缺失值的标量值。 默认值取决于
对于扩展 在1.1.0版中更改。 |
返回值: | DataFrame 输入对象的副本,已移位。 |
例子
>>> 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.0 13.0
2020-01-02 NaN 20.0 23.0
2020-01-03 NaN 15.0 18.0
2020-01-04 NaN 30.0 33.0
2020-01-05 NaN 45.0 48.0
>>> 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