在熊猫中将索引连接到MultiIndex

巴克

我有这样的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包含所有三列的:

>>> 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两个索引对象的基础一切都变得相当复杂,以至于它似乎并不是前进的最佳途径。这一定是在熊猫代码库中相对频繁发生的事情,是否有一个优雅的解决方案?

用户名

创建一个模拟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'])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章