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