У меня есть фреймворк pandas. Я хочу «запаздывать» одну из моих колонок. Это означает, например, сдвиг всего столбца '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
Как бы то ни было сделать это?
df.dropna()
и он отбросит все строки NaN без необходимости указывать количество строк для удаления.сдвинуть столбец gdp вверх:
df.gdp = df.gdp.shift(-1)
а затем удалите последнюю строку
источник
Например, чтобы легко сдвинуть на 5 значений, а также избавиться от строк NaN, не отслеживая количество сдвинутых значений:
d['gdp'] = df['gdp'].shift(-5) df = df.dropna()
источник
df.gdp = df.gdp.shift(-1) ## shift up df.gdp.drop(df.gdp.shape[0] - 1,inplace = True) ## removing the last row
источник
Сначала сместите столбец:
df['gdp'] = df['gdp'].shift(-1)
Во-вторых, удалите последнюю строку, содержащую ячейку NaN:
df = df[:-1]
Третий сброс индекса:
df = df.reset_index(drop=True)
источник