【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
スポンサーリンク
