轉自:https://sanwen8.cn/p/2241oUa.html
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’,則會左右移動。