给出以下数据框:
import pandas as pd
df = pd.DataFrame(randn(10, 5), columns=['a', 'b1', 'b2', 'c1', 'c2'])
如何在“b”下绑定“b1”和“b2”以及“c”下绑定“c1”,“c2”的列中添加另一个层次结构级别?
我只找到了在新数据框中生成分层索引的示例。
感谢。
答案 0 :(得分:3)
您可以通过定义MultiIndex(包含原始列标签和新级别)并将其分配给列(覆盖现有列)来完成此操作:
In [73]: upper_level = [i[0] for i in df.columns]
In [74]: df.columns = pd.MultiIndex.from_arrays([upper_level, df.columns])
In [75]: df
Out[75]:
a b c
a b1 b2 c1 c2
0 -1.656965 1.838595 -1.745855 -2.024337 0.087243
1 0.573167 0.946658 0.691831 -1.107968 -0.911961
2 0.279150 0.038185 0.970203 -0.129443 0.977402
3 -1.192675 2.103922 -1.170816 1.433252 0.251258
4 1.465639 1.925409 -0.759904 1.062088 0.555272
5 -0.667394 -0.941874 0.192990 0.787811 -1.236446
6 -0.016380 -0.106379 -1.328149 -0.576587 0.269650
7 -1.040711 -0.156927 0.056562 -1.073571 0.899144
8 -0.962474 0.505168 0.348957 1.640170 -0.376509
9 -0.431045 0.228514 -1.447591 0.058036 0.126517
在这种情况下,我通过获取原始列的第一个字符来创建新的索引级别,但当然如果需要,您可以在此处应用另一个函数。