python - 如何删除行并重命名多索引表
问题描述
我有如下所示的多索引数据框,我想删除“A”上方的行(例如向上移动数据框)
metric data data
F K
C B
A 2 3
B 4 5
C 6 7
D 8 9
期望的输出
ALIAS data data
metric F K
A 2 3
B 4 5
C 6 7
D 8 9
我查看了多个帖子,但找不到更接近于创建预期结果的内容。如何获得所需的输出?
https://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html
解决方案
让我们尝试DataFrame.droplevel
从列中删除级别 2,并DataFrame.rename_axis
更新列轴名称:
df = df.droplevel(level=2, axis=1).rename_axis(['ALIAS', 'metric'], axis=1)
或使用索引等效方法Index.droplevel
和Index.rename
:
df.columns = df.columns.droplevel(2).rename(['ALIAS', 'metric'])
df
:
ALIAS data
metric F K
A 2 3
B 4 5
C 6 7
D 8 9
设置:
import numpy as np
import pandas as pd
df = pd.DataFrame(
np.arange(2, 10).reshape(-1, 2),
index=list('ABCD'),
columns=pd.MultiIndex.from_arrays([
['data', 'data'],
['F', 'K'],
['C', 'B']
], names=['metric', None, None])
)
df
:
metric data
F K
C B
A 2 3
B 4 5
C 6 7
D 8 9
推荐阅读
- unity3d - 将 Color[] 或 Color32[] 转换为 YV12、NV21 或 YUV_420_888 图像格式
- swift - 如何使用`variable:[String:Codable]`使结构可编码?
- java - java lock如何知道应该锁定哪些资源
- javascript - 如何在 Vue 安装的应用程序中仅渲染一次原生 WebComponent
- r - lavaan 中具有多个中介和多个自变量的 SEM 模型
- tensorflow - 如何在回归问题中从 CNN 输出 float32 图像?
- mysql - 在从 SQL 查询导入之前检查 Google 工作表中是否存在记录
- python - PYPDF2 - 提取所有页面并转换为 CSV
- javascript - 如何将 setTimeout 与 puppeteer page.evaluate 一起使用
- mysql - Nodejs - MySQL - 高流量解决方案