Je ne sais pas trop où je me suis égaré mais je n'arrive pas à réinitialiser l'index sur une base de données.
Lorsque je lance test.head()
, je reçois le résultat ci-dessous:
Comme vous pouvez le constater, le cadre de données est une tranche, de sorte que l'index est hors limites . Ce que j'aimerais faire, c'est réinitialiser l'index pour ce cadre de données. Je lance donc test.reset_index(drop=True)
. Cela génère les éléments suivants:
Cela ressemble à un nouvel index, mais ce n'est pas le cas. En exécutant test.head
à nouveau, l'index est toujours le même. Tenter d'utiliser lambda.apply
ou iterrows()
crée des problèmes avec le cadre de données.
Comment puis-je vraiment réinitialiser l'index?
La réponse de BrenBarn fonctionne.
Ce qui suit fonctionnait également via this thread , qui ne constitue pas un dépannage mais une explication de la procédure de réinitialisation de l'index:
test = test.reset_index()
del test['index']
reset_index
par défaut ne modifie pas le DataFrame; il retourne un new DataFrame avec l'index de réinitialisation. Si vous souhaitez modifier l'original, utilisez l'argument inplace
: df.reset_index(drop=True, inplace=True)
. Vous pouvez également affecter le résultat de reset_index
en effectuant df = df.reset_index(drop=True)
.
J'ajouterais à la réponse du code veritas:
Si vous avez déjà spécifié une colonne d'index, vous pouvez bien sûr sauvegarder le fichier. Dans mon exemple hypothétique:
df_total_sales_customers = pd.DataFrame({'Sales': total_sales_customers['Sales'],
'Customers': total_sales_customers['Customers']}, index = total_sales_customers.index)
df_total_sales_customers = df_total_sales_customers.reset_index()
En tant qu'extension de la réponse de in code veritas ... au lieu de faire del
à la fin:
test = test.reset_index()
del test['index']
Vous pouvez définir drop sur True
.
test = test.reset_index(drop=True)