【发布时间】:2013-08-14 04:28:11
【问题描述】:
我快要发疯了。我有一个这样的数据框:
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
使用后:
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 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 和 python 还很陌生,所以也许我只是愚蠢。请让我知道我在这里缺少什么,谢谢。
【问题讨论】:
-
我不确定您所说的“展开”是什么意思。尽管为了显示目的而隐藏了重复索引,但它们仍然存在。但也许您希望四个 MultiIndex 级别是普通列——在这种情况下,它们将按您指定的方式显示,并且在某些方面更容易处理。在这种情况下,只需使用
df.reset_index()的结果即可。 -
嗨,丹,谢谢您的回复。我已经试过了。问题是此命令还将所有变量恢复为案例。所以我的数据和我之前调用的pivot_table一样。
-
嗯。这很令人惊讶。你确定你是在pivot_table的结果上执行reset_index,而不是在原来的DataFrame上?
-
我快疯了。看来你是对的。我添加了一个临时变量来存储 pivot_table 的结果,现在它似乎可以工作了! Big THX 永远不会独自解决这个问题!
标签: python pandas pivot-table multi-index