Pandas で列をオフセットする方法: 例付き
shift()関数を使用して、pandas DataFrame の列の値を上下にシフトできます。
#shift values down by 1 df[' column1 '] = df[' column1 ']. shift (1) #shift values up by 1 df[' column1 '] = df[' column1 ']. shift (-1)
次の例は、実際に次の pandas DataFrame でこの関数を使用する方法を示しています。
import pandas as pd #createDataFrame df = pd. DataFrame ({' product ': ['A', 'B', 'C', 'D', 'E', 'F'], ' sales ': [4, 7, 8, 12, 15, 19]}) #view DataFrame df product sales 0 to 4 1 B 7 2 C 8 3 D 12 4 E 15 5 F 19
例 1: 列を上または下に移動する
次のコードは、「product」列のすべての値を 1 ずつ下にシフトする方法を示しています。
#shift all 'product' values down by 1
df[' product '] = df[' product ']. shift (1)
#view updated DataFrame
df
product sales
0 NaN 4
1 to 7
2 B 8
3 C 12
4 D 15
5 E 19
「product」列の各値が 1 ずつシフトされ、列の最初の値が NaN に変更されていることに注意してください。
また、Product 列の最後の値 (「F」) がデータフレームから完全に削除されていることにも注意してください。
DataFrame に値「F」を保持するには、まず DataFrame の下部に空白行を追加してから、オフセットを実行する必要があります。
import numpy as np
#add empty row to bottom of DataFrame
df. loc [len(df. index )] = [np. nah , np. no ]
#shift all 'product' values down by 1
df[' product '] = df[' product ']. shift (1)
#view updated DataFrame
df
product sales
0 NaN 4.0
1 to 7.0
2B 8.0
3C 12.0
4 D 15.0
5 E 19.0
6 F NaN
「F」値が「product」列の最後の値として保持されることに注意してください。
例 2: 複数の列を上下に移動する
次のコードは、「product」列と「sales」列のすべての値を 2 ずつ上にシフトする方法を示しています。
#shift all 'product' and 'sales' values up by 2
df[[' product ', ' sales ']] = df[[' product ', ' sales ']]. shift (-2)
#view updated DataFrame
df
product sales
0 C 8.0
1 D 12.0
2 E 15.0
3 F 19.0
4 NaN NaN
5 NaN NaN
「product」列と「sales」列の各値が 2 ずつ上にシフトされ、各列の下 2 つの値が NaN に変更されていることに注意してください。
注: ここで、 shift()関数の完全なドキュメントを見つけることができます。
追加リソース
次のチュートリアルでは、パンダで他の一般的な操作を実行する方法を説明します。
Pandas DataFrame に行を追加する方法
Pandas DataFrame に列を追加する方法
Pandas DataFrame にヘッダー行を追加する方法