Pandas でオフセット列を作成する方法 (例付き)


pandas でshift()関数を使用すると、別の列からシフトされた値を表示する列を作成できます。

この関数は次の基本構文を使用します。

 df[' lagged_col1 '] = df[' col1 ']. shift ( 1 )

SHIFT()関数の値は、シフトを計算する値の数を示すことに注意してください。

次の例は、この構文を実際に使用する方法を示しています。

例: Pandas でオフセット列を作成する

連続 10 日間にわたる店舗の売上を示す次のパンダ データフレームがあるとします。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' day ': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
                   ' sales ': [18, 10, 14, 13, 19, 24, 25, 29, 15, 18]})
#view DataFrame
print (df)

   day sales
0 1 18
1 2 10
2 3 14
3 4 13
4 5 19
5 6 24
6 7 25
7 8 29
8 9 15
9 10 18

SHIFT()関数を使用して、各行に前日の売上を表示するシフト列を作成できます。

 #add column that represents lag of sales column
df[' sales_previous_day '] = df[' sales ']. shift ( 1 )

#view updated DataFrame
print (df)

   day sales sales_previous_day
0 1 18 NaN
1 2 10 18.0
2 3 14 10.0
3 4 13 14.0
4 5 19 13.0
5 6 24 19.0
6 7 25 24.0
7 8 29 25.0
8 9 15 29.0
9 10 18 15.0

結果を解釈する方法は次のとおりです。

  • sales列には前の値がないため、lag 列の最初の値はNaNになります。
  • offset 列の 2 番目の値は、 Sales列の前の値であるため、 18です。
  • offset 列の 3 番目の値は、 Sales列の前の値であるため、 10です。

等々。

必要に応じて、複数のオフセット列を DataFrame に追加することもできることに注意してください。

 #add two lag columns
df[' sales_previous_day '] = df[' sales ']. shift ( 1 )
df[' sales_previous_day2 '] = df[' sales ']. shift ( 2 ) 

#view updated DataFrame
print (df)

   day sales sales_previous_day sales_previous_day2
0 1 18 NaN NaN
1 2 10 18.0 NaN
2 3 14 10.0 18.0
3 4 13 14.0 10.0
4 5 19 13.0 14.0
5 6 24 19.0 13.0
6 7 25 24.0 19.0
7 8 29 25.0 24.0
8 9 15 29.0 25.0
9 10 18 15.0 29.0

同じ一般的なアプローチを使用して、必要なだけオフセット列を追加できます。

: プライマリ列を作成するには、 shift()関数で負の値を使用するだけです。

追加リソース

次のチュートリアルでは、パンダで他の一般的なタスクを実行する方法を説明します。

Pandasで列を削除する方法
Pandas で列を除外する方法
Pandas で選択した列に関数を適用する方法
Pandas DataFrame で列の順序を変更する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です