Python pandas.DataFrame.shift函数方法的使用

Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中pandas.DataFrame.shift方法的使用。

DataFrame.shift(periods=1, freq=None, axis=0, fill_value=None) [source]

用一个可选的时间频率按所需的周期数移动索引。

当频率未通过时,在不重新排列数据的情况下移动索引。如果频率通过(在这种情况下,指数一定日期或日期时间,或将提高NotImplementedError),该指数将会增加使用时间和freq.频率时可以推断出指定为“infer”只要频率或inferred_freq属性设置在索引中。

参数:

periodsint

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

freq DateOffsettseries.offsets

timedelta或str(可选)

tseries模块或时间规则使用的偏移量(例如 ‘EOM’)。

如果指定了freq,则索引值会移位,但数据不会重新对齐。

也就是说,如果您想在移位时扩展索引并保留原始数据,

请使用freq。如果将freq指定为“infer”

则将从索引的freqinferred_freq属性推断出来。

如果这些属性都不存在,则会引发ValueError

axis{0 ‘index’, 1‘columns’, None}

默认为 None

转变(Shift)方向。

fill_valueobject, 可选

用于新引入的缺失值的标量值。默认值取决于selfdtype 。

对于数字数据,np.nan使用。对于日期时间,

时间增量或期间数据等NaT。对于扩展dtype

self.dtype.na_value使用。

在1.1.0版中更改。用于新引入的缺失值的标量值。

默认值取决于selfdtype 。对于数字数据,

np.nan使用。对于日期时间,时间增量或期间数据等NaT

对于扩展dtypeself.dtype.na_value使用。

在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

文档pandas.DataFrame.shift

推荐阅读
cjavapy编程之路首页