gpt4 book ai didi

python - 在 Pandas 中将索引连接到多重索引

转载 作者:行者123 更新时间:2023-12-01 09:03:31 25 4
gpt4 key购买 nike

我有 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()时函数,它将我的新索引值连接到索引对象的底部,而不是作为新级别。我还看了this question想要做类似的事情,但是这是使用数据框架,并且这里出于超出这个问题范围的长期复杂原因,我正在使用索引对象。我尝试使用两个索引对象的底层值进行的所有操作都变得相当复杂,以至于它似乎不是最佳的前进路径。这一定是 pandas 代码库中相对频繁发生的事情,有一个优雅的解决方案吗?

最佳答案

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

关于python - 在 Pandas 中将索引连接到多重索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52266128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com