在一个级别中具有重复值的 Pandas MultiIndex

时间:2021-04-09 05:38:16

标签: pandas multi-index

我需要用另一组值替换一个级别的pandas MultiIndex 的值。这很容易使用 set_levels 完成,除非新集合包含重复项,即原始级别值集合中的两个或多个值映射到新集合中的相同值。这样做会导致错误。通过将所有索引值(而不是级别)作为元组的 MultiIndex,映射到该空间中的新级别,然后用 from_tuples< 构造的新 MultiIndex 替换原始索引,有一种蛮力的方法可以使这项工作完成。 /strong> 方法。有没有更好的办法? enter image description here

2 个答案:

答案 0 :(得分:0)

我认为您需要 rename 指定级别为 MultiIndex 才能将新值设置为相同的重复值,例如用于处理第一级:

d = {'orig1': 'a', 'orig2':'a'}

df = df.rename(index=d, level=0)

答案 1 :(得分:0)

最简单的方法是在不验证完整性的情况下设置一个级别,然后转换为新索引。例如,如果要将级别 1 的值设置为 new_values_level_1,则可以执行以下操作:

df.index = pd.MultiIndex.from_tuples(df.index.set_levels(new_values_level_1,1,verify_integrity=False).values)