Eu gostaria de mudar uma coluna em um Pandas DataFrame
, mas não consegui encontrar um método para fazer isso na documentação sem reescrever todo o DF. Alguém sabe fazer isso? Quadro de dados:
## x1 x2
##0 206 214
##1 226 234
##2 245 253
##3 265 272
##4 283 291
Saída desejada:
## x1 x2
##0 206 nan
##1 226 214
##2 245 234
##3 265 253
##4 283 272
##5 nan 291
Respostas:
fonte
df['x2'] = np.roll(df['x2'], 1)
Você precisa usar
df.shift
aqui.df.shift(i)
desloca todo o dataframe pori
unidades para baixo.Então, para
i = 1
:Entrada:
Resultado:
Portanto, execute este script para obter a saída esperada:
fonte
Vamos definir o dataframe do seu exemplo por
Então você pode manipular o índice da segunda coluna
e finalmente recombinar as colunas únicas
Talvez não seja rápido, mas simples de ler. Considere definir variáveis para os nomes das colunas e o deslocamento real necessário.
Editar: Geralmente, a mudança é possível
df[2].shift(1)
conforme já postado, porém isso cortaria o transporte.fonte
Se você não quiser perder as colunas que ultrapassou o final do seu dataframe, basta anexar o número necessário primeiro:
fonte
Suponho que importe
Primeiro anexe uma nova linha com
NaN, NaN,...
no final de DataFrame (df
).Isso criará um novo DF df2. Talvez haja uma maneira mais elegante, mas isso funciona.
Agora você pode mudá-lo:
fonte
Tentando responder a um problema pessoal e semelhante ao seu, encontrei no Pandas Doc o que acho que responderia a esta pergunta:
Espero ajudar futuras perguntas neste assunto.
fonte
É assim que eu faço:
Basicamente, estou gerando um dataframe vazio com o índice desejado e, em seguida, apenas concatená-los. Mas eu realmente gostaria de ver isso como um recurso padrão nos pandas, então propus um aprimoramento para os pandas.
fonte