python – 将列标签的级别附加到MultiIndex

python – 将列标签的级别附加到MultiIndex,第1张

概述我试图在MultiIndex中更改单个级别的列标签. 例如, test = pd.DataFrame(np.random.random((4,4)))test.columns = pd.MultiIndex.from_product([['Level1'],['A','B','C','D'],['Level3']])Out: Level1 我试图在MultiIndex中更改单个级别的列标签.

例如,

test = pd.DataFrame(np.random.random((4,4)))test.columns = pd.MultiIndex.from_product([['Level1'],['A','B','C','D'],['Level3']])Out:      Level1                                        A         B         C         D     Level3    Level3    Level3    Level30  0.153388  0.253070  0.338756  0.0255981  0.818954  0.169352  0.851079  0.8232632  0.535703  0.432627  0.690446  0.5999973  0.304654  0.919936  0.095747  0.404449

我想将’Level 3’标签更改为[‘1′,’2′,’3′,’4’],但找不到干净的方法.

我已经尝试了下面的,它提供了16个元素的迭代,所以不是我需要的.

test.columns = pd.MultiIndex.from_product([['Level1'],['1','2','3','4']])

我发现的唯一解决方法是在开始时手动定义每个级别并重新定义MultiIndex

例如,

level1 = ['Level1','Level1','Level1']level2 = ['A','D']level3 = ['1','4']test = pd.DataFrame(np.random.random((4,4)),columns=[level1,level2,level3])

有更整洁的解决方案吗?我正在使用大型数据集,因此上述内容非常繁琐.

解决方法 IIUC您需要设置级别值,然后分两步设置标签:

In [153]:test.columns = test.columns.set_levels(['0','1','3'],level=2)test.columns = test.columns.set_labels([0,1,2,3],level=2)testOut[153]:     Level1                                        A         B         C         D          0         1         2         30  0.122865  0.778640  0.582170  0.6956481  0.051477  0.479084  0.150539  0.1439292  0.362087  0.285109  0.465092  0.2051573  0.963744  0.730001  0.148460  0.474678

原因是因为最初你的第三级都有重复列的相同标签(0):

In [155]:test.columnsOut[155]:MultiIndex(levels=[['Level1'],['Level3']],labels=[[0,0],[0,0]])

但你想要的是重命名水平和标签,导致以下结果:

In [158]:test.columnsOut[158]:MultiIndex(levels=[['Level1'],['0','3']],3]])

因此,您可以再次重新构建多索引,或者设置级别值,然后设置标签值,如上所示

总结

以上是内存溢出为你收集整理的python – 将列标签的级别附加到MultiIndex全部内容,希望文章能够帮你解决python – 将列标签的级别附加到MultiIndex所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1197634.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存