以下是示例数据集:

                          |Count|
|-------------------------|     |
|Name |ID_1  |Level |ID_2 |     |
|-----|------|------|-----|-----|
|Kate |91978 |Junior|3    |13   |
|Lucy |47992 |Junior|3    |11   |
|John |37005 |Middle|2    |8    |
|Peter|42235 |Senior|1    |21   |

假设['Name'、'ID\u 1'、'Level'、'ID\u 2']是多索引名称

我想go 掉所有偶数多索引名称,这意味着go 掉[ID\u 1',ID\u 2']

              |Count|
|-------------|     |
|Name  |Level |     |
|------|------|-----|
|Kate  |Junior|13   |
|Lucy  |Junior|11   |
|John  |Middle|8    |
|Peter |Senior|21   |

我发现这个方法:df.index = df.index.droplevel(1)

但问题是真正的数据集太大,手动删除每一秒的列不是一个选项.

推荐答案

您可以将索引级别列表传递到DataFrame.droplevel.

例如,给定以下数据帧

import pandas as pd

df = (
    pd.DataFrame(np.random.randint(5, size=(5,5)), 
                 columns=list('abcde'))
      .set_index(list('abcd'))
)
>>> df

         e
a b c d   
0 4 2 0  2
3 2 3 1  1
4 2 2 3  4
0 0 1 4  2
  4 3 4  4

你可以这样做

res = df.droplevel(list(range(1, len(df.index.names), 2)))
>>> res

     e
a c   
0 2  2
3 3  1
4 2  4
0 1  2
  3  4

Python相关问答推荐

海运图:调整行和列标签

迭代嵌套字典的值

在单个对象中解析多个Python数据帧

删除marplotlib条形图上的底边

Pandas GroupBy可以分成两个盒子吗?

基于形状而非距离的两个numpy数组相似性

如果包含特定值,则筛选Groupby

不允许 Select 北极滚动?

统计numpy. ndarray中的项目列表出现次数的最快方法

使用类型提示进行类型转换

根据Pandas中带条件的两个列的值创建新列

使用tqdm的进度条

在电影中向西北方向对齐""

为什么Visual Studio Code说我的代码在使用Pandas concat函数后无法访问?

Pythonquests.get(Url)返回Colab中的空内容

有没有一种方法可以在朗肯代理中集成向量嵌入

查找数据帧的给定列中是否存在特定值

使用_in链接操作管道传输的中间结果是否可用于链中的后续函数?

Networkx中K-Shell最核心的 node

Chrome 122-如何允许不安全的内容?(不安全下载被阻止)