Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更改多级层次结构数据帧内的索引_Python_Pandas_Dataframe - Fatal编程技术网

Python 更改多级层次结构数据帧内的索引

Python 更改多级层次结构数据帧内的索引,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个多级别的DataFrame,它有两个级别,分别命名为外部组和内部数字。我想更改内部数字的索引 outside='g1 g1 g1 g2 g2 g2'.split() inside='1 2 3 1 2 3'.split() hier_index=list(zip(outside,inside)) hier_index= pd.MultiIndex.from_tuples(hier_index) df=pd.DataFrame(np.random.randn(6,3), hier_inde

我有一个多级别的
DataFrame
,它有两个级别,分别命名为
外部组和内部数字。我想更改
内部数字的索引

outside='g1 g1 g1 g2 g2 g2'.split()
inside='1 2 3 1 2 3'.split()
hier_index=list(zip(outside,inside))
hier_index= pd.MultiIndex.from_tuples(hier_index)
df=pd.DataFrame(np.random.randn(6,3), hier_index, ['a','b','c'])

df.index.names = ['Outer Group', 'Inner Numbers']

因此,我的数据帧是外部
g1、g2
和内部
1,2,3 1,2,3
。我想换个名字 这些都是我正在努力学习的。我不想走捷径,我想学的是如何走捷径

  • g1、g2
    更改为
    X、Y
  • 更改
    g1(123)
    ->
    X(a,b,c)
  • 更改列的标签,例如
    外部组
    ->
    级别1
    内部编号->级别2

  • 您可以将
    重命名
    与字典一起使用,并指定级别,因为可以使用以下方法更改索引名称:

    或者通过创建新的
    多索引
    并重新分配回(新级别的两个列表的长度必须与原始列表相同):


    善用MultiIndex@jezreal谢谢。。。非常感谢
    df = df.rename({'g1':'X','g2':'Y'}, level=0)
    df = df.rename({'1':'a','2':'b', '3':'c'}, level=1)
    df = df.rename_axis(['Level 1','Level 2'])
    print (df)
                            a         b         c
    Level 1 Level 2                              
    X       a       -1.085631  0.997345  0.282978
            b       -1.506295 -0.578600  1.651437
            c       -2.426679 -0.428913  1.265936
    Y       a       -0.866740 -0.678886 -0.094709
            b        1.491390 -0.638902 -0.443982
            c       -0.434351  2.205930  2.186786
    
    mux = pd.MultiIndex.from_product([['X','Y'], ['a','b','c']], names=['Level 1','Level 2'])
    df.index = mux
    print (df)
                            a         b         c
    Level 1 Level 2                              
    X       a       -1.085631  0.997345  0.282978
            b       -1.506295 -0.578600  1.651437
            c       -2.426679 -0.428913  1.265936
    Y       a       -0.866740 -0.678886 -0.094709
            b        1.491390 -0.638902 -0.443982
            c       -0.434351  2.205930  2.186786