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