在進行資料操作時, 經常會碰到基於同一列進行錯位相加減的操作, 即對某一列進行向上或向下平移(shift).
往常, 我們都會使用迴圈進行操作, 但經過查閱相關資料, 發現結合pandas
裡的groupby
和shift
兩個函式就能輕鬆實現上述要求.
#建立樣例資料
temp = pd.dataframe();temp
out[1]:
id value01
1112
2133
2442
5536
通過temp['value_shift'] = temp.groupby('id')['value'].shift(1);temp
out[180]:
id value value_shift01
1 nan11
21.021
32.032
4 nan42
54.053
6 nan
temp['value_shift_1'] = temp.groupby('id')['value'].shift(-1);temp
out[181]:
id value value_shift value_shift_101
1 nan 2.011
21.0
3.0213
2.0 nan32
4 nan 5.042
54.0 nan53
6 nan nan
shift
函式裡面的值來控制向前還是向後偏移, 缺少的值會填充nan
.
groupby
函式裡的引數控制基於什麼字段進行shift
.
官方文件 這裡是以index
為基準.
Python之OpenGL筆記 8 平移變換
1 使用glsl實現圖形的平移。平移變換的任務是將乙個物件沿著乙個任意長度和方向的向量移動。對於三維空間上的一點 x,y,z 我們使用4 4齊次矩陣的形式來表示平移變換 使用四維向量來表示三維向量的做法稱作齊次座標,這對3d圖形學來說普遍而又實用。向量的第四個分量稱之為 w 事實上,我們在以前教程中...
避免對索引列進行計算
原文 避免對索引列進行計算 作業系統 windows 2007 資料庫版本 sql server 2005 發表日期 2014 11 07 16 56 01 今天同事讓我看一條sql,說是在前台查詢很快,但是把sql取出來,在資料庫中執行的時候,跑10分鐘都不出結果。看了一下sql,最後定位到乙個檢...
用matlab對訊號進行傅利葉變換
傅氏變換分析是訊號分析中很重要的方法,借助matlab可以很方便的對各類訊號進行傅氏頻域分析。本文介紹了集中離散的傅氏變換以及matlab實現方法。1.離散序列的傅利葉變換dtft discrete time fourier transform 1 n 8 原離散訊號有8點 2 n 0 1 n 1 ...