web-dev-qa-db-fra.com

L'index de réinitialisation des pandas ne semble pas fonctionner?

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:

test.head

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:

reset

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?

13
in code veritas

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).

34
BrenBarn

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()
1
Subspacian

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)
1
Wendao Liu