【Python】Pandas/Dataframeで隣の行の値と計算することができるshift関数
Pandas/DataFrameで隣の行の値を使って計算したい場合はshift関数を使います。隣の行だけでなく何個か先のデータも取得できます。
以下の図は前のデータを取り出して差分を取って「差」という列を新たに作るというイメージ図ですが、今回はこれを作ってみます。
ソースコードは以下のとおりです。shift(1)は前の行を表していますがshift(-1)だと次の行、shift(2)だと2個前の行を取り出すことができます。
import pandas as pd import numpy as np d = [ ['17:00', 105.243],['17:04', 105.241],['17:09', 105.264],['17:14', 105.311],['17:19', 105.318], ['17:24', 105.331],['17:29', 105.336],['17:34', 105.341],['17:39', 105.349],['17:44', 105.361], ['17:49', 105.353],['17:54', 105.357],['17:59', 105.361],['18:04', 105.371],['18:09', 105.348], ['18:14', 105.342],['18:19', 105.345],['18:24', 105.347],['18:29', 105.351],['18:34', 105.351]] print(d) header = ['時刻', 'ドル円'] df = pd.DataFrame(data=d, columns=header) df['差'] = df['ドル円']-df['ドル円'].shift(1) print(df) # 時刻 ドル円 差 # 0 17:00 105.243 NaN # 1 17:04 105.241 -0.002 # 2 17:09 105.264 0.023 # 3 17:14 105.311 0.047 # 4 17:19 105.318 0.007 # 5 17:24 105.331 0.013 # 6 17:29 105.336 0.005 # 7 17:34 105.341 0.005 # 8 17:39 105.349 0.008 # 9 17:44 105.361 0.012 # 10 17:49 105.353 -0.008 # 11 17:54 105.357 0.004 # 12 17:59 105.361 0.004 # 13 18:04 105.371 0.010 # 14 18:09 105.348 -0.023 # 15 18:14 105.342 -0.006 # 16 18:19 105.345 0.003 # 17 18:24 105.347 0.002 # 18 18:29 105.351 0.004 # 19 18:34 105.351 0.000
スポンサーリンク