Pandas DataFrame DataFrame.shift() 函式
Suraj Joshi
2023年1月30日
Pandas
Python DataFrame
-
pandas.DataFrame.shift()語法 -
示例程式碼:
DataFrame.shift()函式沿行移動 -
示例程式碼:
DataFrame.shift()函式沿列移動 -
示例程式碼:
DataFrame.shift方法,引數為fill_value
Pandas DataFrame.shift 方法用於將 DataFrame 的索引按指定的週期數移位,時間頻率可選。
pandas.DataFrame.shift() 語法
DataFrame.shift(periods=1, freq=None, axis=0, fill_value=None)
引數
periods |
整數。決定移動索引的週期數,可以是負數,也可以是正數 |
freq |
DateOffset、tseries.offsets、timedelta 或 str。可選引數,用於在不調整資料的情況下移動索引值 |
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 填充。
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn