データを行・列方向にずらす

投稿者: | 2022-05-27

参考URL:https://note.nkmk.me/python-pandas-shift/

目次

時系列でない場合

# サンプルデータ作成
df = pd.DataFrame(np.arange(15).reshape(5,3), columns=list('abc'))

    a   b   c
0   0   1   2
1   3   4   5
2   6   7   8
3   9  10  11
4  12  13  14
  • shift() を利用する
  • ずらした場合、そこにはNaNが入るため、列はfloat型に変換される
  • ずらした結果、ずらされた末端の行または列は消える
  • マイナス値を入れると下行または最右列へ挿入される
df.shift()

#      a     b     c
# 0  NaN   NaN   NaN
# 1  0.0   1.0   2.0
# 2  3.0   4.0   5.0
# 3  6.0   7.0   8.0
# 4  9.0  10.0  11.0

df.shift(2)

#      a    b    c
# 0  NaN  NaN  NaN
# 1  NaN  NaN  NaN
# 2  0.0  1.0  2.0
# 3  3.0  4.0  5.0
# 4  6.0  7.0  8.0

df.shift(-1)

#       a     b     c
# 0   3.0   4.0   5.0
# 1   6.0   7.0   8.0
# 2   9.0  10.0  11.0
# 3  12.0  13.0  14.0
# 4   NaN   NaN   NaN

df.shift(axis=1)

#     a   b   c
# 0 NaN   0   1
# 1 NaN   3   4
# 2 NaN   6   7
# 3 NaN   9  10
# 4 NaN  12  13

df.shift(-1, axis=1)

#     a   b   c
# 0   1   2 NaN
# 1   4   5 NaN
# 2   7   8 NaN
# 3  10  11 NaN
# 4  13  14 NaN

時系列の場合

上記URL参照する