
例如,
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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)