非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【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
 

 

スポンサーリンク

 - Python