Eu tenho um dataframe do pandas. Eu quero 'retardar' uma de minhas colunas. Isso significa, por exemplo, deslocar a coluna inteira 'gdp' para cima em um e, em seguida, remover todos os dados em excesso na parte inferior das linhas restantes para que todas as colunas tenham o mesmo comprimento novamente.
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
Como fazer isso?
df.dropna()
e ele eliminará todas as linhas NaN sem que você precise especificar o número de linhas a serem eliminadas.deslocar o PIB da coluna para cima:
df.gdp = df.gdp.shift(-1)
e, em seguida, remova a última linha
fonte
Para mudar facilmente 5 valores, por exemplo, e também se livrar das linhas NaN, sem ter que controlar o número de valores que você alterou:
d['gdp'] = df['gdp'].shift(-5) df = df.dropna()
fonte
df.gdp = df.gdp.shift(-1) ## shift up df.gdp.drop(df.gdp.shape[0] - 1,inplace = True) ## removing the last row
fonte
Primeiro mude a coluna:
df['gdp'] = df['gdp'].shift(-1)
Em seguida, remova a última linha que contém uma célula NaN:
df = df[:-1]
Terceiro, redefina o índice:
df = df.reset_index(drop=True)
fonte