Cómo eliminar la última fila de datos de un dataframe de pandas

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 lleva a errores. Todavía debo estar malinterpretando algo básico.

Gracias por adelantado.

Para soltar las últimas n filas:

 df.drop(df.tail(n).index,inplace=True) # drop last n rows 

Por la misma vena, puedes soltar las primeras n filas:

 df.drop(df.head(n).index,inplace=True) # drop first n rows 

Dado que la posición del índice en Python está basada en 0, en realidad no habrá un elemento en el index en la ubicación correspondiente a len(DF) . Necesitas que sea last_row = len(DF) - 1 :

 In [49]: dfrm Out[49]: ABC 0 0.120064 0.785538 0.465853 1 0.431655 0.436866 0.640136 2 0.445904 0.311565 0.934073 3 0.981609 0.695210 0.911697 4 0.008632 0.629269 0.226454 5 0.577577 0.467475 0.510031 6 0.580909 0.232846 0.271254 7 0.696596 0.362825 0.556433 8 0.738912 0.932779 0.029723 9 0.834706 0.002989 0.333436 [10 rows x 3 columns] In [50]: dfrm.drop(dfrm.index[len(dfrm)-1]) Out[50]: ABC 0 0.120064 0.785538 0.465853 1 0.431655 0.436866 0.640136 2 0.445904 0.311565 0.934073 3 0.981609 0.695210 0.911697 4 0.008632 0.629269 0.226454 5 0.577577 0.467475 0.510031 6 0.580909 0.232846 0.271254 7 0.696596 0.362825 0.556433 8 0.738912 0.932779 0.029723 [9 rows x 3 columns] 

Sin embargo, es mucho más simple escribir DF[:-1] .

 DF[:-n] 

donde n es el último número de filas para soltar.

Para soltar la última fila:

 DF = DF[:-1] 

drop devuelve una nueva matriz, por eso se atragantó en la publicación de og; Tenía un requisito similar para cambiar el nombre de algunos encabezados de columnas y eliminar algunas filas debido a un archivo csv con formato incorrecto convertido a Dataframe, así que después de leer esta publicación utilicé:

 newList = pd.DataFrame(newList) newList.columns = ['Area', 'Price'] print(newList) # newList = newList.drop(0) # newList = newList.drop(len(newList)) newList = newList[1:-1] print(newList) 

y funcionó muy bien, como se 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.

stats = pd.read_csv (“C: \ py \ programs \ second pandas \ ex.csv”)

stats (salida)

  ABC 0 0.120064 0.785538 0.465853 1 0.431655 0.436866 0.640136 2 0.445904 0.311565 0.934073 3 0.981609 0.695210 0.911697 4 0.008632 0.629269 0.226454 5 0.577577 0.467475 0.510031 6 0.580909 0.232846 0.271254 7 0.696596 0.362825 0.556433 8 0.738912 0.932779 0.029723 9 0.834706 0.002989 0.333436 

solo usa skipfooter = 1

skipfooter: int, por defecto 0

Número de líneas al final del archivo para saltar

 stats_2 = pd.read_csv("C:\\py\\programs\\second pandas\\ex.csv", skipfooter=1, engine='python') 

stats_2 (Salida)

  ABC 0 0.120064 0.785538 0.465853 1 0.431655 0.436866 0.640136 2 0.445904 0.311565 0.934073 3 0.981609 0.695210 0.911697 4 0.008632 0.629269 0.226454 5 0.577577 0.467475 0.510031 6 0.580909 0.232846 0.271254 7 0.696596 0.362825 0.556433 8 0.738912 0.932779 0.029723