1. 程式人生 > >pandas之shift()函式

pandas之shift()函式

shift函式是對資料進行移動的操作,假如現在有一個DataFrame資料df,如下所示:
index	value1
A 	0
B 	1
C 	2
D 	3

那麼如果執行以下程式碼:

df.shift()

就會變成如下:
index	value1
A 	NaN
B 	0
C 	1
D 	2

看一下函式原型:

DataFrame.shift(periods=1, freq=None, axis=0)

引數

    periods:型別為int,表示移動的幅度,可以是正數,也可以是負數,預設值是1,1就表示移動一次,注意這裡移動的都是資料,而索引是不移動的,移動之後沒有對應值的,就賦值為NaN。
    執行以下程式碼:

df.shift(2)

就會得到:
index	value1
A 	NaN
B 	NaN
C 	0
D 	1

執行:

df.shift(-1)

會得到:
index	value1
A 	1
B 	2
C 	3
D 	NaN

    freq: DateOffset, timedelta, or time rule string,可選引數,預設值為None,只適用於時間序列,如果這個引數存在,那麼會按照引數值移動時間索引,而資料值沒有發生變化。例如現在有df1如下:

index	value1
2016-06-01 	0
2016-06-02 	1
2016-06-03 	2
2016-06-04 	3

執行:

df1.shift(periods=1,freq=datetime.timedelta(1))

會得到:


index | value1
—-|—-
2016-06-02 | 0
2016-06-03 | 1
2016-06-04 | 2
2016-06-05 | 3

        axis:{0, 1, ‘index’, ‘columns’},表示移動的方向,如果是0或者’index’表示上下移動,如果是1或者’columns’,則會左右移動。