當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。