1. ホーム
  2. python

[解決済み] pandas dataframeのカラムを1つ上にシフトさせる?

2022-10-12 17:11:49

質問

pandasのdataframeを持っています。私は、列の1つを「遅延」させたいと思っています。例えば、全体の列 'gdp' を 1 つ上にシフトし、すべての列が再び同じ長さになるように、残りの行の下部にあるすべての余分なデータを削除することを意味します。

df =
    y  gdp  cap
0   1    2    5
1   2    3    9
2   8    7    2
3   3    4    7
4   6    7    7

df_lag =
    y  gdp  cap
0   1    3    5
1   2    7    9
2   8    4    2
3   3    7    7

どうすればいい?

どのように解決するのですか?

In [44]: df['gdp'] = df['gdp'].shift(-1)

In [45]: df
Out[45]: 
   y  gdp  cap
0  1    3    5
1  2    7    9
2  8    4    2
3  3    7    7
4  6  NaN    7

In [46]: df[:-1]                                                                                                                                                                                                                                                                                                               
Out[46]: 
   y  gdp  cap
0  1    3    5
1  2    7    9
2  8    4    2
3  3    7    7