Acho que deve ser simples, mas tentei algumas idéias e nenhuma delas funcionou:
last_row = len(DF)
DF = DF.drop(DF.index[last_row]) #<-- fail!
Tentei usar índices negativos, mas isso também levou a erros. Devo ainda estar entendendo mal algo básico.
DF = DF[:-1]
?Respostas:
Para eliminar as últimas n linhas:
Na mesma linha, você pode descartar as primeiras n linhas:
fonte
onde n é o último número de linhas a serem eliminadas.
Para soltar a última linha:
fonte
Como o posicionamento do índice em Python é baseado em 0, não haverá realmente um elemento no
index
local correspondente alen(DF)
. Você precisa que sejalast_row = len(DF) - 1
:No entanto, é muito mais simples apenas escrever
DF[:-1]
.fonte
Surpreso que ninguém mencionou este:
A execução de um teste de velocidade em um DataFrame de 1000 linhas mostra que fatiar e
head
/tail
são cerca de 6 vezes mais rápido do que usardrop
:fonte
head()
etail()
criar uma vista enquanto quedrop()
realmente muda a representação na memória (ou modificação inplace, ou cria uma inteiramente nova trama de dados). Eu não pesquisei isso nos documentos, alguém, por favor, consulte. (se essa for a diferença: boa explicação para a diferença de desempenho, e é preciso escolher cuidadosamente entre elas) /head
,tail
edrop
todos retornam uma visão, embora seja verdade quedrop
dá a você a opção de modificar o dataframe original no local.O resultado das estatísticas:
Apenas use
skipfooter=1
Saída de estatísticas_2
fonte
drop retorna um novo array, então é por isso que ele engasgou no post og; Tive um requisito semelhante para renomear alguns cabeçalhos de coluna e excluir algumas linhas devido a um arquivo csv malformado convertido para Dataframe, então, depois de ler este post, usei:
e funcionou muito bem, como você pode ver com as duas linhas comentadas acima, tentei o método drop. () e funcionou, mas não tão bom e legível quanto usar [n: -n], espero que ajude alguém, obrigado.
fonte
Para DataFrames mais complexos que têm um índice múltiplo (digamos "Estoque" e "Data") e se deseja remover a última linha de cada Estoque, não apenas a última linha do último Estoque, a solução é:
Como o
groupby()
está adicionando um nível adicional ao Multi-índice, simplesmente o soltamos no final usandoreset_index()
. O df resultante mantém o mesmo tipo de índice múltiplo de antes da operação.fonte