【问题标题】:Adding levels to MultiIndex, removing without losing向 MultiIndex 添加级别,删除而不丢失
【发布时间】:2023-03-25 13:15:01
【问题描述】:

假设我有一个带有 MultiIndex 的 DataFrame df,它的级别为 L。

有没有办法从索引中删除 L 并重新添加它?

df = df.index.drop('L') 将 L 从 DataFrame 中完全删除(不像 df= df.reset_index() 有一个 drop 参数)。 我当然可以df = df.reset_index().set_index(everything_but_L, inplace=True)

现在,让我们假设索引包含除 L 之外的所有内容,我想添加 L。 df.index.insert(0, df.L) 不起作用。 同样,我当然可以致电df= df.reset_index().set_index(everything_including_L, inplace=True),但感觉不对。

我为什么需要这个?由于索引不必是唯一的,因此我可能想添加一个新列,以便索引变得唯一。在拆分数据后一级索引不再包含任何信息的情况下,删除可能很有用(比如我的索引是 A,B 并且我在 A=x 的 df 上进行操作,但我不想丢失会发生的 A使用 index.droplevel('A'))。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    在当前版本(0.17.1)中可以

    df.set_index(column_to_add, append=True, inplace=True)
    

    df.reset_index(level=column_to_remove_from_index).
    

    与重置 n 列然后将 n+1 添加到索引相比,这带来了显着的加速。

    【讨论】:

    • 有什么方法可以在系列上做到这一点?
    猜你喜欢
    • 2017-07-25
    • 2017-07-09
    • 1970-01-01
    • 2013-01-22
    • 2018-06-01
    • 2013-06-24
    • 2020-09-16
    • 2015-12-18
    • 1970-01-01
    相关资源
    最近更新 更多