Python 如何在数据帧中还原\展开多索引

Python 如何在数据帧中还原\展开多索引,python,pandas,pivot-table,multi-index,Python,Pandas,Pivot Table,Multi Index,我快要发疯了。我有这样一个数据帧: 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.0

我快要发疯了。我有这样一个数据帧:

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
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   ...
使用后:

pivot_table(data,values='time', rows=['subject','sessionIndex','screenIndex','index'], cols=['key'])
我有以下数据帧:

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   ...
这很好,但我一直坚持“展开”多索引,因此我的数据帧如下所示:

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

我已经尝试过重新索引和索引重置。我对熊猫和蟒蛇还比较陌生,所以也许我只是太笨了。请告诉我这里缺少什么,谢谢。

这只是熊猫中的一个显示选项

尝试在导入熊猫后立即添加此行:
pandas.set\u printpoptions(multi\u sparse=False)

我不知道你说的“展开”是什么意思。尽管出于显示目的而隐藏了重复标记,但它们仍然存在。但也许您希望这四个多索引级别是普通列——在这种情况下,它们将按照您指定的方式显示,并且在某些方面更易于处理。在这种情况下,只需使用
df.reset_index()
.Hi Dan,thx的结果作为您的回复。我已经试过了。问题是,该命令还将所有变量恢复为案例。所以我的数据和以前一样,叫做pivot_table.Hmm。真令人惊讶。您确定要对pivot_表的结果执行reset_index,而不是对原始数据帧执行reset_index吗?我快发疯了。看来你是对的。我添加了一个临时变量来存储pivot_表的结果,现在它似乎可以工作了!大THX永远不会独自解决这个问题!你好,保罗,谢谢你的回复。我的问题实际上不是格式问题。我想使用这些列来执行一些选择器。在多索引中连接列时,这要困难得多。因此,我想还原索引列。@user2675976我认为最好保留索引。
dataframe.select
方法可以非常有效地执行对
multi-index
的乘法值的选择(例如,
subset=df.select(lambda x:x[0]='S019'和[3,5]和[3]中的s[2])Thx Paul.我解决了我的问题。因为我想在之后使用不同的选择标准:train=data[data['subject']==user]train=train[train['sessionIndex']==1],所以恢复inices似乎更容易。