如何在层次结构下放置两个现有列?

时间:2014-08-29 09:07:15

标签: pandas

给出以下数据框:

import pandas as pd
df = pd.DataFrame(randn(10, 5), columns=['a', 'b1', 'b2', 'c1', 'c2'])

如何在“b”下绑定“b1”和“b2”以及“c”下绑定“c1”,“c2”的列中添加另一个层次结构级别?

我只找到了在新数据框中生成分层索引的示例。

感谢。

1 个答案:

答案 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

在这种情况下,我通过获取原始列的第一个字符来创建新的索引级别,但当然如果需要,您可以在此处应用另一个函数。