pandas DataFrame.shift()函数可以把数据移动指定的位数
period参数指定移动的步幅,可以为正为负.axis指定移动的轴,1为行,0为列.
>>> import pandas as pd >>> data1 = pd.DataFrame({ ... 'a': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], ... 'b': [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] ... }) >>> data1 a b 0 0 9 1 1 8 2 2 7 3 3 6 4 4 5 5 5 4 6 6 3 7 7 2 8 8 1 9 9 0 >>> data2 = data1.shift(axis=0) >>> data2 a b 0 NaN NaN 1 0.0 9.0 2 1.0 8.0 3 2.0 7.0 4 3.0 6.0 5 4.0 5.0 6 5.0 4.0 7 6.0 3.0 8 7.0 2.0 9 8.0 1.0 >>> data2 = data1['b'].shift(axis=0) >>> data2 0 NaN 1 9.0 2 8.0 3 7.0 4 6.0 5 5.0 6 4.0 7 3.0 8 2.0 9 1.0 Name: b, dtype: float64 >>> data1['b'] = data1['b'].shift(axis=0) >>> data1 a b 0 0 NaN 1 1 9.0 2 2 8.0 3 3 7.0 4 4 6.0 5 5 5.0 6 6 4.0 7 7 3.0 8 8 2.0 9 9 1.0
如果想往上或者往左移动,可以指定(periods=-1):
data4 = data1.shift(periods=-1, axis=0)