首页 > 解决方案 > 如何将索引值分配给多索引数据框的级别?

问题描述

我有一个多索引数据框。但是,我想将其第一级更改为某个索引值列表。假设它的第一个级别最初是[2,4,1],我想将其更改为[1,2,100]. 实现它的最简单方法是什么?我目前的方法将涉及reset_index、更改列值并再次设置索引。

标签: pandas

解决方案


一种方法是创建一个旧值到替换值的字典,然后迭代索引作为替换值的元组,并将新索引分配回 DataFrame:

new_vals = {2: 1, 4: 2, 1: 100}
df.index = pd.MultiIndex.from_tuples([(new_vals[tup[0]], tup[1]) for tup in df.index.to_list()])

(这假设您的 MultiIndex 只有 2 个级别,对于您想要保留的每个额外级别,您都需要将tup[2]etc 添加到列表理解中。)


推荐阅读