En Python pandas, ligne de départ de l'indice de 1 au lieu de zéro, sans créer de colonne supplémentaire
Je sais que je peux réinitialiser les indices comme
df.reset_index(inplace=True)
mais cela va démarrer l'indice de 0
. Je veux le lancer à partir de 1
. Comment puis-je le faire sans la création de toutes les colonnes et en gardant l'index/reset_index de fonctionnalités et d'options? Je ne pas souhaitez créer un nouveau dataframe, donc inplace=True
devrait toujours s'appliquer.
OriginalL'auteur Bram Vanroy | 2015-08-27
Vous devez vous connecter pour publier un commentaire.
Suffit d'attribuer directement un nouvel indice de tableau:
Exemple:
Ou tout simplement:
Si l'index est déjà en fonction de 0
TIMINGS
Pour une raison que je ne peux pas prendre des timings sur
reset_index
mais les suivantes sont des timings sur une ligne de 100 000 df:Sans le timing pour
reset_index
je ne peux pas dire avec certitude, cependant, il ressemble juste en ajoutant 1 à chaque valeur de l'indice sera plus rapide si l'index est déjà0
en fonctionNe pas prématurément optimiser.
Les travaux de cette. Notez cependant que dans les cas où aucun des indices sont présents à l'avance (p. ex., tableaux croisés) cela ne fonctionne pas. Vous aurez alors tout d'abord mis à l'index, par exemple en exécutant d'abord
df.reset_index(inplace=True)
puis mis à l'index par la méthode décrite ci-dessus.Le
df.index = df.index + 1
a été le plus utile pour moi.Encore plus succinctement:
df.index += 1
.OriginalL'auteur EdChum