Pandas DataFrame DataFrame.shift() 函式

Suraj Joshi 2023年1月30日 2020年6月17日
  1. pandas.DataFrame.shift() 語法
  2. 示例程式碼:DataFrame.shift() 函式沿行移動
  3. 示例程式碼:DataFrame.shift() 函式沿列移動
  4. 示例程式碼:DataFrame.shift 方法,引數為 fill_value
Pandas DataFrame DataFrame.shift() 函式

Pandas DataFrame.shift 方法用於將 DataFrame 的索引按指定的週期數移位,時間頻率可選。

pandas.DataFrame.shift() 語法

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

引數

periods 整數。決定移動索引的週期數,可以是負數,也可以是正數
freq DateOffsettseries.offsetstimedeltastr。可選引數,用於在不調整資料的情況下移動索引值
axis 沿著行(axis=0)或列(axis=1)移動
fill_value 用於新引入的缺失值的標量值

返回值

它返回一個帶有移位索引值的 DataFrame 物件。

示例程式碼:DataFrame.shift() 函式沿行移動

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame:")
print(df)

shifted_df=df.shift(periods=1)
print("Shifted DataFrame")
print(shifted_df)

輸出:

Original DataFrame:
   X  Y
0  1  4
1  2  1
2  3  8
Shifted DataFrame
     X    Y
0  NaN  NaN
1  1.0  4.0
2  2.0  1.0

這裡,我們將 periods 的值設定為 1,這將使 DataFrame 的行從頂部向底部移動 1 個單位。

在向底部移動的同時,最上面的行成為空缺,預設由 NaN 值填充。

如果我們想將行從底部向頂部移動,我們可以將 periods 引數設定為負值。

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame:")
print(df)

shifted_df=df.shift(periods=-2)
print("Shifted DataFrame")
print(shifted_df)

輸出:

Original DataFrame:
   X  Y
0  1  4
1  2  1
2  3  8
Shifted DataFrame
     X    Y
0  3.0  8.0
1  NaN  NaN
2  NaN  NaN

它將行從底部向頂部移動,週期為 2

示例程式碼:DataFrame.shift() 函式沿列移動

如果我們想移動沿列軸移動,我們在 shift() 方法中設定 axis=1

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame:")
print(df)
shifted_df=df.shift(periods=1,axis=1)
print("Shifted DataFrame")
print(shifted_df)

輸出:

Original DataFrame:
   X  Y
0  1  4
1  2  1
2  3  8
Shifted DataFrame
    X    Y
0 NaN  1.0
1 NaN  2.0
2 NaN  3.0

在這裡,我們將 periods 的值設定為 1,這將使 DataFrame 的列軸從左向右移動 1 個單位。

如果我們想將列軸從右向左移動,我們為 periods 引數設定一個負值。

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame:")
print(df)

shifted_df=df.shift(periods=-1,axis=1)
print("Shifted DataFrame")
print(shifted_df)

輸出:

Original DataFrame:
   X  Y
0  1  4
1  2  1
2  3  8
Shifted DataFrame
     X   Y
0  4.0 NaN
1  1.0 NaN
2  8.0 NaN

它將列軸從右向左移動了 1 個週期。

示例程式碼:DataFrame.shift 方法,引數為 fill_value

在前面的例子中,移位後的缺失值預設用 NaN 來填充,我們也可以通過使用 fill_value 引數用其他值而不是 NaN 來填充。我們也可以通過使用 fill_value 引數用其他值而不是 NaN 來填充缺失值。

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame:")
print(df)

shifted_df=df.shift(periods=-1,
                    axis=1,
                    fill_value=4)
print("Shifted DataFrame")
print(shifted_df)

輸出:

Original DataFrame:
   X  Y
0  1  4
1  2  1
2  3  8
Shifted DataFrame
   X  Y
0  4  4
1  1  4
2  8  4

它將所有由 shift() 方法建立的缺失值用 4 填充。

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn