Подтвердить что ты не робот

Сдвинуть столбец в панде данных на одну?

У меня есть датафрейм для панд. Я хочу отстать от одной из моих колонок. Это означает, например, что смещение всего столбца "gdp" вверх на один, а затем удаление всех лишних данных в нижней части оставшихся строк, чтобы все столбцы снова имели одинаковую длину.

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

В любом случае, чтобы сделать это?

4b9b3361

Ответ 1

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

Ответ 2

столбец сдвига gdp вверх:

df.gdp = df.gdp.shift(-1)

а затем удалите последнюю строку

Ответ 3

df.gdp = df.gdp.shift(-1) ## shift up
df.gdp.drop(df.gdp.shape[0] - 1,inplace = True) ## removing the last row

Ответ 4

Например, чтобы легко сместить на 5 значений, а также избавиться от строк NaN, не отслеживая количество смещенных значений:

d['gdp'] = df['gdp'].shift(-5)
df = df.dropna()