pandas DataFrame.shift()函数可以把数据移动指定的位数
period参数指定移动的步幅,可以为正为负.axis指定移动的轴,1为行,0为列,默认为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]
})
print 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
如果想让 a和b的数据都往下移动一位:
data2 = data1.shift(axis=0)
print 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
如果是在行上往右移动一位:
data3 = data1.shift(axis=1)
print data3
a b
0 NaN 0.0
1 NaN 1.0
2 NaN 2.0
3 NaN 3.0
4 NaN 4.0
5 NaN 5.0
6 NaN 6.0
7 NaN 7.0
8 NaN 8.0
9 NaN 9.0
如果想往上或者往左移动,可以指定(periods=-1):
data4 = data1.shift(periods=-1, axis=0)
print data4
a b
0 1.0 8.0
1 2.0 7.0
2 3.0 6.0
3 4.0 5.0
4 5.0 4.0
5 6.0 3.0
6 7.0 2.0
7 8.0 1.0
8 9.0 0.0
9 NaN NaN