Je suis très proche de devenir fou. J'ai un dataframe comme ceci:Comment faire pour restaurer unfold multiindex dans pandas DataFrame
subject sessionIndex screenIndex index key time
s019 1 3 1 Shift 0.3442
s019 1 3 2 Shift.t 0.1514
s019 1 3 3 h 0.0844
s019 1 3 4 e 0.1127
s019 1 3 5 space 0.1201
s091 3 5 821 h 0.1126
s091 3 5 822 a 0.1425
s091 3 5 823 n 0.0926
s091 3 5 824 d 0.1525
après utilisation:
pivot_table(data,values='time', rows=['subject','sessionIndex','screenIndex','index'], cols=['key'])
Je le dataframe suivant:
key Shift Shift.t a d ...
subject sessionIndex screenIndex index
s019 1 3 1 0.3442 NaN NaN NaN ...
2 NaN 0.1514 NaN NaN ...
3 NaN NaN NaN NaN ...
4 NaN NaN NaN NaN ...
5 NaN NaN NaN NaN ...
s091 3 5 821 NaN NaN NaN NaN ...
822 NaN NaN 0.1425 NaN ...
823 NaN NaN NaN NaN ...
824 NaN NaN NaN 0.1525 ...
qui est grand, mais je me suis collé à "dérouler" le multiindice afin que mon dataframe ressemble à ceci:
subject sessionIndex screenIndex index Shift Shift.t a d ...
s019 1 3 1 0.3442 NaN NaN NaN ...
s019 1 3 2 NaN 0.1514 NaN NaN ...
s019 1 3 3 NaN NaN NaN NaN ...
s019 1 3 4 NaN NaN NaN NaN ...
s019 1 3 5 NaN NaN NaN NaN ...
s091 3 5 821 NaN NaN NaN NaN ...
s091 3 5 822 NaN NaN 0.1425 NaN ...
s091 3 5 823 NaN NaN NaN NaN ...
s091 3 5 824 NaN NaN NaN 0.1525 ...
J'ai déjà essayé la réindexation et la réinitialisation d'index. Je suis assez nouveau pour les pandas et python alors peut-être que je suis juste stupide. S'il vous plaît laissez-moi savoir ce que je manque ici, Thx.
Je ne suis pas sûr de ce que vous entendez par « déplier ». Bien que les indices répétés sont cachés à des fins d'affichage, ils sont toujours là. Mais peut-être souhaitez-vous que les quatre niveaux de MultiIndex soient des colonnes normales - dans ce cas, ils s'afficheront comme vous l'avez spécifié et seront, d'une certaine manière, plus faciles à gérer. Dans ce cas, utilisez simplement le résultat de '' df.reset_index() ''. –
Salut Dan, merci pour votre réponse. J'ai déjà essayé ça. Le problème est que cette commande rétablit également toutes les variables en cas. Donc, mes données sont comme avant j'ai appelé pivot_table. – user2675976
Hmm. C'est surprenant. Êtes-vous sûr d'exécuter reset_index sur le résultat de pivot_table, et non sur le DataFrame d'origine? –