【毎日Python】Pythonでデータフレームのデータをずらす方法|DataFrame.shift

shift
毎日Python/こつこつPython

Pythonでデータをずらす方法です。
使用するのは、PythonのPandasライブラリのshiftメソッドです。

このような簡単なデータフレームを作成します。

import pandas as pd

df = pd.DataFrame({'No.1': [10, 15, 12, 48, 32],
'No.2': [29, 1, 43, 18, 25],
'No.3': [38, 28, 16, 22, 49]},
index=['A', 'B', 'C', 'D', 'E'])
df

実行結果:
main_df

shiftメソッドの引数に何も指定せずに実行してみましょう。
データが1行分下にずれたのが確認できました。
このように、ずれた行は欠損値になります。

df.shift()

実行結果:
df01

次に、データをずらす行数を指定してみましょう。
今回は2を指定して実行します。
データを2行分下にずらすことができました。

df.shift(2)

実行結果:
df02

データを列方向にずらすには、引数にaxis=1を指定します。
実行します。
列方向をデータをずらすことができました。

df.shift(axis=1)

実行結果:
df03

最後に、このような時系列データで試してみましょう。

df_date = pd.DataFrame({'x': range(1, 6)}, index=pd.date_range('2020-07-01', '2020-07-05'))
df_date 

実行結果:
time_df

引数freqに期間を指定すると、その期間分データをずらすことができます。
実行します。
5日分ずらすことができました。

df_date.shift(freq='5D')

実行結果:
df04

関連メソッド

【毎日Python】Pythonでデータフレームの行ごと・列ごとの差を取得する方法|DataFrame.diff