为了账号安全,请及时绑定邮箱和手机立即绑定

在 Pandas 中将索引连接到多索引

在 Pandas 中将索引连接到多索引

阿晨1998 2021-06-10 14:49:32
我有这样的pandas MultiIndex对象:>>> import pandas as pd>>> arrays = [[1, 1, 2, 2], ['red', 'blue', 'red', 'blue']]>>> multi = pd.MultiIndex.from_arrays(arrays, names=('number', 'color'))>>> print(multi)MultiIndex(levels=[[1, 2], ['blue', 'red']],           labels=[[0, 0, 1, 1], [1, 0, 1, 0]],           names=['number', 'color'])我想从另一个来源附加第三个索引列。>>> idx = pd.Index(['a', 'a', 'a', 'b'], name='letter')最终结果应该是MultiIndex包含所有三列的 a :>>> pd.MagicFunctionICanNotFind(multi, idx)MultiIndex(levels=[[1, 2], ['blue', 'red'], ['a', 'b']],           labels=[[0, 0, 1, 1], [1, 0, 1, 0], [0, 0, 0, 1]],           names=['number', 'color', 'letter'])当我尝试使用该MultiIndex.append()函数时,它将我的新索引值连接到我的索引对象的底部,而不是作为一个新级别。我还查看了这个想要做类似事情的问题,但是它正在使用数据框,并且出于超出此问题范围的长期复杂原因,我正在使用索引对象。我一直在尝试使用values两个索引对象的基础的一切都变得相当复杂,以至于它似乎不是最好的前进道路。这必须是 Pandas 代码库中相对频繁发生的事情,有没有优雅的解决方案?
查看完整描述

1 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

创建一个模拟 DataFrame 并使用set_index:


pd.DataFrame(index=multi).set_index(idx, append=True).index

MultiIndex(levels=[[1, 2], ['blue', 'red'], ['a', 'b']],

           labels=[[0, 0, 1, 1], [1, 0, 1, 0], [0, 0, 0, 1]],

           names=['number', 'color', 'letter'])


查看完整回答
反对 回复 2021-06-15
  • 1 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号