用于移动df中的行列,或滚动取第N行值做为新列,代码如下:
# -*- coding:utf-8 -*-
import pandas as pd
import numpy as np
# 创建DF
df = pd.DataFrame(np.random.randint(5, size=(3, 2)), index=pd.date_range('1/1/2020', periods=3), columns=['A', 'B'])
print(df)
##### 参数说明
# axis指定移动的轴:0为行,1为列
# period:参数指定移动的步幅,可以为正为负
# 整体下移1行
print(df.shift(axis=0, periods=1))
# 向右移1列
print(df.shift(axis=1, periods=1))
# 取上一行为新列
df['C'] = df['B'].shift(axis=0, periods=1)
print(df)
输出结果:
A B
2020-01-01 3 4
2020-01-02 0 1
2020-01-03 2 3
A B
2020-01-01 NaN NaN
2020-01-02 3.0 4.0
2020-01-03 0.0 1.0
A B
2020-01-01 NaN 3.0
2020-01-02 NaN 0.0
2020-01-03 NaN 2.0
A B C
2020-01-01 3 4 NaN
2020-01-02 0 1 4.0
2020-01-03 2 3 1.0