当前位置: 首页 > 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)✅ 推荐删除列索引层级

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

http://www.xdnf.cn/news/1018153.html

相关文章:

  • java中跨域问题及解决方案
  • Spring XML 常用命名空间配置
  • React Native 项目实战 —— 记账本应用开发指南
  • 【React Native 性能优化:虚拟列表嵌套 ScrollView 问题全解析】
  • Java-数组-异常(基础)
  • 包含40个购物网站UI界面的psd适用于电商项目
  • 在 Linux 系统中通过 yum 安装 Sublime Text
  • 平压印刷机设计原理与关键技术研究
  • 网络安全防护:点击劫持
  • Linux 系统设置时区
  • Token 的流动性:为什么它是项目的关键?
  • 传染病传播模拟:基于社会接触网络的疫情预测模型
  • 【设计模式】UML图与工厂模式
  • 德信软件,512天,我的创作纪念日
  • RocketMQ总结
  • Rimini Street宣布将SAP ECC和S/4HANA支持延长至2040年,为企业提供替代路径
  • 基于大模型预测过敏性紫癜的技术方案大纲
  • Rust 学习笔记2025.6.13
  • Excel词典(xllex.dll)文件丢失或损坏导致功能异常?别慌!专业修复策略来了!
  • 排序--计数排序
  • Active Directory Certificate Services(AD CS)攻击基础
  • Java单例模式有几种实现方式
  • 为什么py文件打包后大小会增加很多?
  • 亚马逊云 Lambda 容器化部署教程
  • Rust 学习笔记:关于处理任意数量的 future 的练习题
  • Redis 使用场景、缓存什么数据?怎么保证数据一致性?
  • 自定义线程池 4.0
  • 基于51单片机的简易售货机系统
  • 使用 C/C++ 和 OpenCV 构建智能停车场视觉管理系统
  • 在GIS 工作流中实现数据处理(4)