我在Panda中有多索引数据帧,其中包含名称(A、B、C.(、功能(F1、..FN(和日期。在每个日期,每个名称都有一个对应于每个功能的值。读取数据会得到以下df:
df = pd.read_csv(path,header=[0,1],index_col=0)
df =
Name A B C ...
Ft F1 F2 F3 ... F_N F1 F2 F3 ... F_N F1 ...
date
1/1 1 4 1 ... 3 3 2 2 1 5 ...
1/2 4 3 3 ... 1 5 1 2 1 4 ...
我现在想重组它,使名称和日期多次显示为单独的行,以减少列的数量:
df =
date Name F1 F2 F3 ... F_N
1/1 A 1 4 1 ... 3
1/1 B 3 2 2 ... 1
... ... ... ... ...
1/2 A 4 3 3 ... 1
1/2 B 5 1 2 ... 1
...
我尝试过不同的开箱方式;爆炸,但似乎没有一个能给我带来我想要的结果。
如果您不喜欢多索引,只需使用stack
,然后使用reset_index
即可
df.stack(level=0).reset_index()
输出:
level_0 Name F1 F2 F3
-- --------- ------ ---- ---- ----
0 1/1 A 1 4 1
1 1/1 B 3 2 2
2 1/2 A 4 3 3
3 1/2 B 5 1 2