当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python pandas.DataFrame.shift用法及代码示例


用法:

DataFrame.shift(periods=1, freq=None, axis=0, fill_value=NoDefault.no_default)

使用可选时间 freq 将索引移动所需的周期数。

freq未通过时,移动索引而不重新对齐数据。如果 freq 被传递(在这种情况下,索引必须是日期或日期时间,否则会引发 NotImplementedError ),索引将使用句点和 freq 增加。只要在索引中设置了 freq 或 inferred_freq 属性,就可以在指定为 “infer” 时推断 freq

参数

periodsint

要转移的周期数。可以是正面的或负面的。

freqDateOffset、tseries.offsets、timedelta 或 str,可选

使用 tseries 模块或时间规则的偏移量(例如“EOM”)。如果指定了freq,则索引值会移动,但数据不会重新对齐。也就是说,如果您想在移位时扩展索引并保留原始数据,请使用freq。如果 freq 被指定为 “infer” 那么它将从索引的 freq 或 inferred_freq 属性中推断出来。如果这些属性都不存在,则会抛出 ValueError。

axis{0 或‘index’,1 或‘columns’,无},默认无

换个方向。

fill_value对象,可选

用于新引入的缺失值的标量值。默认值取决于 self 的 dtype。对于数值数据,使用np.nan。对于日期时间、时间增量或周期数据等。使用NaT。对于扩展数据类型,使用self.dtype.na_value

返回

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

相关用法


注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.DataFrame.shift。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。