Pandas DataFrame DataFrame.shift()関数

Suraj Joshi 2023年1月30日
  1. pandas.DataFrame.shift() の構文:
  2. コード例:行に沿ってシフトする DataFrame.shift() 関数
  3. コード例:列に沿ってシフトする DataFrame.shift() 関数
  4. コード例:fill_value パラメータを指定する DataFrame.shift メソッド
Pandas DataFrame DataFrame.shift()関数

Pandas DataFrame.shift メソッドは、オプションの時間頻度で指定された期間だけ DataFrame のインデックスをシフトするために使用されます。

pandas.DataFrame.shift() の構文:

DataFrame.shift(periods=1, freq=None, axis=0, fill_value=None)

パラメーター

periods 整数。負または正のインデックスをシフトする期間数を決定します
freq DateOffsettseries.offsetstimedelta、または str。データを再調整せずにインデックス値をシフトするために使用されるオプションのパラメーター
axis 行(axis = 0)または列(axis = 1)に沿ってシフト
fill_value 新しく導入された欠損値に使用されるスカラー値。

戻り値

シフトされたインデックス値を持つ DataFrame オブジェクトを返します。

コード例:行に沿ってシフトする DataFrame.shift() 関数

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame:")
print(df)

shifted_df=df.shift(periods=1)
print("Shifted DataFrame")
print(shifted_df)

出力:

Original DataFrame:
   X  Y
0  1  4
1  2  1
2  3  8
Shifted DataFrame
     X    Y
0  NaN  NaN
1  1.0  4.0
2  2.0  1.0

ここでは、periods の値を 1 に設定します。これにより、DataFrame の行が上から 1 の単位だけ下にシフトします。

下にシフトしている間、一番上の行は空になり、デフォルトで NaN 値で埋められます。

行を下から上にシフトする場合は、periods パラメーターに負の値を設定できます。

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame:")
print(df)

shifted_df=df.shift(periods=-2)
print("Shifted DataFrame")
print(shifted_df)

出力:

Original DataFrame:
   X  Y
0  1  4
1  2  1
2  3  8
Shifted DataFrame
     X    Y
0  3.0  8.0
1  NaN  NaN
2  NaN  NaN

行を 2 の周期で下から上にシフトします。

コード例:列に沿ってシフトする DataFrame.shift() 関数

列軸をシフトしたい場合は、shift() メソッドで axis = 1 を設定します。

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame:")
print(df)
shifted_df=df.shift(periods=1,axis=1)
print("Shifted DataFrame")
print(shifted_df)

出力:

Original DataFrame:
   X  Y
0  1  4
1  2  1
2  3  8
Shifted DataFrame
    X    Y
0 NaN  1.0
1 NaN  2.0
2 NaN  3.0

ここでは、periods の値を 1 に設定します。これにより、DataFrame の列が左から 1 単位だけ右にシフトします。

列軸を右から左にシフトする場合は、periods パラメーターに負の値を設定します。

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame:")
print(df)

shifted_df=df.shift(periods=-1,axis=1)
print("Shifted DataFrame")
print(shifted_df)

出力:

Original DataFrame:
   X  Y
0  1  4
1  2  1
2  3  8
Shifted DataFrame
     X   Y
0  4.0 NaN
1  1.0 NaN
2  8.0 NaN

列を 1 の期間だけ右から左にシフトします。

コード例:fill_value パラメータを指定する DataFrame.shift メソッド

前の例では、シフト後の欠損値はデフォルトで NaN で埋められています。また、fill_value パラメータを使用して、欠落した値を NaN ではなく他の値で埋めることもできます。

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame:")
print(df)

shifted_df=df.shift(periods=-1,
                    axis=1,
                    fill_value=4)
print("Shifted DataFrame")
print(shifted_df)

出力:

Original DataFrame:
   X  Y
0  1  4
1  2  1
2  3  8
Shifted DataFrame
   X  Y
0  4  4
1  1  4
2  8  4

shift() メソッドによって作成されたすべての欠損値を 4 で埋めます。

著者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn