当前位置: 首页 > news >正文

【Pandas】pandas DataFrame droplevel

Pandas2.2 DataFrame

Reshaping sorting transposing

方法描述
DataFrame.droplevel(level[, axis])用于**从 DataFrame 的索引(行或列)中删除指定层级(level)**的方法

pandas.DataFrame.droplevel()

pandas.DataFrame.droplevel() 是一个用于**从 DataFrame 的索引(行或列)中删除指定层级(level)**的方法。它通常用于处理具有多级索引(MultiIndex)的 DataFrame,可以灵活地移除不需要的索引层级。


📌 方法签名
DataFrame.droplevel(level, axis=0)

🔧 参数说明
参数类型说明
levelint、str 或 list of int/str要删除的索引层级,可以是层级编号(从 0 开始)或层级名称
axis{0/'index', 1/'columns'},默认为 0指定操作的是行索引(0)还是列索引(1

✅ 返回值
  • 返回一个新的 DataFrame,其中指定的索引层级被删除;
  • 原始数据不会被修改,除非设置 inplace=True

🧪 示例代码及结果
示例 1:基本用法 - 删除行索引中的某一层
import pandas as pd
import numpy as np# 创建一个多级行索引 DataFrame
arrays = [['A', 'A', 'B', 'B'],['one', 'two', 'one', 'two']
]
index = pd.MultiIndex.from_arrays(arrays, names=('outer', 'inner'))
df = pd.DataFrame({'data': [1, 2, 3, 4]}, index=index)print("Original DataFrame:")
print(df)
输出:
                data
outer inner        
A     one          1two          2
B     one          3two          4
# 删除 inner 层索引
df_dropped = df.droplevel('inner')
print("\nAfter droplevel('inner'):")
print(df_dropped)
输出:
       data
outer       
A         1
A         2
B         3
B         4

示例 2:删除多个层级
# 创建一个多级列索引 DataFrame
arrays = [['X', 'X', 'Y', 'Y'],['a', 'b', 'a', 'b']
]
columns = pd.MultiIndex.from_arrays(arrays, names=('group', 'sub'))
df_multi_col = pd.DataFrame(np.random.randn(2, 4), columns=columns)print("Original Multi-column DataFrame:")
print(df_multi_col)
输出示例(随机数):
group          X                   Y          
sub            a         b         a         b
0       0.496714 -0.138264  0.647689  1.523030
1      -0.234137  1.579213  0.767435 -0.469474
# 删除列索引中的 'sub' 层
df_dropped_cols = df_multi_col.droplevel('sub', axis=1)
print("\nAfter droplevel('sub', axis=1):")
print(df_dropped_cols)
输出示例:
group         X         Y
0      0.496714  0.647689
1     -0.234137  0.767435

示例 3:通过层级编号删除
# 使用层级编号删除 outer 层(level=0)
df_dropped_by_index = df.droplevel(0)
print("\nAfter droplevel(0):")
print(df_dropped_by_index)
输出:
       data
inner      
one       1
two       2
one       3
two       4

🧠 应用场景
场景说明
简化多级索引结构移除不必要的索引层级以提升可读性
准备数据导出在输出到 CSV、Excel 等格式前清理索引
重塑数据结构配合 stack() / unstack() 进行更复杂的索引变换
数据分析前预处理清理冗余索引层级以便后续分析

⚠️ 注意事项
  • droplevel() 不会修改原始数据,除非设置 inplace=True
  • 可以通过层级名或层级编号进行删除;
  • 支持一次删除多个层级(传入列表);
  • 适用于行索引(axis=0)和列索引(axis=1);
  • 如果删除后只剩一个层级,索引将变为普通 Index 而非 MultiIndex

✅ 总结对比
方法是否推荐使用说明
droplevel(level)✅ 推荐快速删除指定索引层级
droplevel(level, axis=1)✅ 推荐删除列索引层级

你可以根据实际需求选择删除行或列索引中的特定层级,从而更好地控制数据结构和索引布局。

相关文章:

  • MoneyPrinterTurbo根据关键词自动生成视频
  • WebSocket 前端断连原因与检测方法
  • 家政维修平台实战25:工人接单
  • idea中导入maven项目的方法
  • NineData 社区版 V4.2.0 发布!新增MySQL与PostgreSQL互相迁移,SQL管理Milvus,安装更高效
  • 锂电池充电芯片XSP30,2-3节串联锂电池升降压充电管理芯片
  • 探索弹性弦行为:从绘图到问题解决-AI云计算数值分析和代码验证
  • 京东零售基于Flink的推荐系统智能数据体系 |Flink Forward Asia 峰会实录分享
  • Java单元测试
  • AI 重构代码实战:如何用飞算 JavaAI 快速升级遗留系统?
  • 【走进Golang】测试SDK环境搭建成功,配置path环境变量
  • Windows安装Oracle19
  • 华为云Flexus+DeepSeek征文|基于华为云一键部署 Dify 应用的性能测试实践:构建聊天应用并使用 JMeter做压力测试
  • [技术积累]成熟的前端和后端开发框架
  • goland 的 dug 设置
  • ELK 日志分析系统
  • Keil无法下载程序到STM32 Error: Flash Download failed - Target DLL has been cancelled
  • Python爬虫进阶:气象数据爬取中的多线程优化与异常处理技巧
  • onxxrunrime问题集锦
  • UE5.5构建iOS失败但没有显式错误信息的问题
  • 小程序平台收费/郑州seo服务技术
  • 网站改版完成/快点tv下载安装
  • 在本地做的网站怎么修改域名/百度seo排名查询
  • 高端的网站建设公司/搜索引擎优化seo的英文全称是
  • 中国建设银行网站开通短信/佛山网站建设制作公司
  • 长沙企业网站制作哪家好/媒体:多地新增感染趋势回落