在進行數據操作時, 經常會碰到基于同一列進行錯位相加減的操作, 即對某一列進行向上或向下平移(shift).
往常, 我們都會使用循環進行操作, 但經過查閱相關資料, 發現結合pandas里的groupby和shift兩個函數就能輕松實現上述要求.
#創建樣例數據temp = pd.DataFrame({'id':[1,1,1,2,2,3],'value':[1,2,3,4,5,6]});tempOut[1]: id value0 1 11 1 22 1 33 2 44 2 55 3 6
temp['value_shift'] = temp.groupby('id')['value'].shift(1);tempOut[180]: id value value_shift0 1 1 NaN1 1 2 1.02 1 3 2.03 2 4 NaN4 2 5 4.05 3 6 NaNtemp['value_shift_1'] = temp.groupby('id')['value'].shift(-1);tempOut[181]: id value value_shift value_shift_10 1 1 NaN 2.01 1 2 1.0 3.02 1 3 2.0 NaN3 2 4 NaN 5.04 2 5 4.0 NaN5 3 6 NaN NaN通過shift函數里面的值來控制向前還是向后偏移, 缺少的值會填充NaN.
groupby函數里的參數控制基于什么字段進行shift.
官方文檔 這里是以index為基準.
以上這篇python對列進行平移變換的方法(shift)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。
新聞熱點
疑難解答