Сдвинуть столбец в панде данных на одну?
У меня есть датафрейм для панд. Я хочу отстать от одной из моих колонок. Это означает, например, что смещение всего столбца "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
В любом случае, чтобы сделать это?
Ответы
Ответ 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()