Je pense que cela devrait être simple, mais j'ai essayé quelques idées et aucune n'a fonctionné:
last_row = len(DF)
DF = DF.drop(DF.index[last_row]) #<-- fail!
J'ai essayé d'utiliser des indices négatifs mais cela conduit également à des erreurs. Je dois encore me méprendre sur quelque chose de fondamental.
DF = DF[:-1]
?Réponses:
Pour supprimer les n dernières lignes:
De la même manière, vous pouvez supprimer les n premières lignes:
la source
où n est le dernier nombre de lignes à supprimer.
Pour supprimer la dernière ligne:
la source
Étant donné que le positionnement de l'index en Python est basé sur 0, il n'y aura pas d'élément
index
à l'emplacement correspondant àlen(DF)
. Vous en avez besoin pour êtrelast_row = len(DF) - 1
:Cependant, il est beaucoup plus simple d'écrire simplement
DF[:-1]
.la source
Personne n'a surpris celui-ci:
L'exécution d'un test de vitesse sur un DataFrame de 1000 lignes montre que le découpage et
head
/tail
est ~ 6 fois plus rapide que d'utiliserdrop
:la source
head()
ettail()
créer une vue alorsdrop()
qu'en réalité change la représentation en mémoire (soit une modification en place, soit crée une toute nouvelle trame de données). Je n'ai pas cherché cela dans les documents, s'il vous plaît, faites-le. (si c'est la différence: bonne explication pour perf diff, et il faut bien choisir entre eux) /head
,tail
etdrop
tous renvoient une vue, bien qu'il soit vrai que celadrop
vous donne la possibilité de modifier le dataframe d'origine en place.La sortie des statistiques:
juste utiliser
skipfooter=1
Sortie de stats_2
la source
drop renvoie un nouveau tableau, c'est pourquoi il s'est étouffé dans le message og; J'avais une exigence similaire pour renommer certains en-têtes de colonne et supprimé certaines lignes en raison d'un fichier csv mal formé converti en Dataframe, donc après avoir lu cet article, j'ai utilisé:
et cela a très bien fonctionné, comme vous pouvez le voir avec les deux lignes commentées ci-dessus, j'ai essayé la méthode drop. () et cela fonctionne mais pas aussi bien et lisible qu'en utilisant [n: -n], j'espère que cela aide quelqu'un, merci.
la source
Pour les DataFrames plus complexes qui ont un Multi-Index (disons "Stock" et "Date") et que l'on souhaite supprimer la dernière ligne de chaque Stock, pas seulement la dernière ligne du dernier Stock, la solution se lit comme suit:
Comme l'
groupby()
ajout d'un niveau supplémentaire au Multi-Index, nous le déposons simplement à la fin en utilisantreset_index()
. Le df résultant conserve le même type de multi-index qu'avant l'opération.la source