Creo que esto debería ser simple, pero probé algunas ideas y ninguna de ellas funcionó:
last_row = len(DF)
DF = DF.drop(DF.index[last_row]) #<-- fail!
Intenté usar índices negativos, pero eso también dio lugar a errores. Todavía debo estar malinterpretando algo básico.
DF = DF[:-1]
?Respuestas:
Para eliminar las últimas n filas:
Del mismo modo, puede colocar las primeras n filas:
fuente
donde n es el último número de filas para eliminar.
Para quitar la última fila:
fuente
Dado que el posicionamiento del índice en Python se basa en 0, en realidad no habrá un elemento en
index
la ubicación correspondiente alen(DF)
. Necesitas que sealast_row = len(DF) - 1
:Sin embargo, es mucho más sencillo escribir
DF[:-1]
.fuente
Sorprendido, nadie mencionó este:
La ejecución de una prueba de velocidad en un DataFrame de 1000 filas muestra que cortar y
head
/tail
es ~ 6 veces más rápido que usardrop
:fuente
head()
ytail()
crear una vista mientras que endrop()
realidad cambia la representación en la memoria (ya sea una modificación en el lugar o crea un marco de datos completamente nuevo). No busqué esto en documentos, que alguien lo haga. (si esa es la diferencia: buena explicación para la diferencia de rendimiento, y hay que elegir cuidadosamente entre ellos) /head
,tail
ydrop
todos devuelven una vista, aunque es cierto quedrop
le da la opción de modificar el marco de datos original en su lugar.La salida de estadísticas:
Solo usa
skipfooter=1
Salida de stats_2
fuente
drop devuelve una nueva matriz, por eso se ahogó en la publicación og; Tenía un requisito similar para cambiar el nombre de algunos encabezados de columna y eliminé algunas filas debido a un archivo csv mal formado convertido a Dataframe, así que después de leer esta publicación usé:
y funcionó muy bien, como puede ver con las dos líneas comentadas arriba. Probé el método drop. () y funcionó pero no tan kool y legible como usar [n: -n], espero que ayude a alguien, gracias.
fuente
Para DataFrames más complejos que tienen un índice múltiple (diga "Stock" y "Fecha") y uno quiere eliminar la última fila de cada Stock, no solo la última fila del último Stock, entonces la solución dice:
Como
groupby()
está agregando un nivel adicional al índice múltiple, simplemente lo soltamos al final usandoreset_index()
. El df resultante mantiene el mismo tipo de índice múltiple que antes de la operación.fuente