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

Pandas 如何在层次结构下放置两个现有列?,pandas,Pandas,给定以下数据帧: import pandas as pd df = pd.DataFrame(randn(10, 5), columns=['a', 'b1', 'b2', 'c1', 'c2']) 如何将另一个层次结构级别添加到将绑定“b”下的“b1”和“b2”以及“c”下的“c1”、“c2”的列中 我只找到了在新数据帧中生成层次索引的示例 谢谢。您可以通过定义多索引(由原始列标签和新级别组成)并将其分配给列(覆盖现有列)来完成此操作: 在本例中,我通过获取原始列的第一个字符来创建新的索引级

给定以下数据帧:

import pandas as pd
df = pd.DataFrame(randn(10, 5), columns=['a', 'b1', 'b2', 'c1', 'c2'])
如何将另一个层次结构级别添加到将绑定“b”下的“b1”和“b2”以及“c”下的“c1”、“c2”的列中

我只找到了在新数据帧中生成层次索引的示例


谢谢。

您可以通过定义多索引(由原始列标签和新级别组成)并将其分配给列(覆盖现有列)来完成此操作:


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

可以通过定义多索引(由原始列标签和新级别组成)并将其分配给列(覆盖现有列)来实现这一点:


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

可以通过定义多索引(由原始列标签和新级别组成)并将其分配给列(覆盖现有列)来实现这一点:


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

可以通过定义多索引(由原始列标签和新级别组成)并将其分配给列(覆盖现有列)来实现这一点:

在本例中,我通过获取原始列的第一个字符来创建新的索引级别,但是如果需要,当然可以在这里应用另一个函数

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