在对 pandas 的 DataFrame 进行切片后,如何更新 pandas MultiIndex 的级别?

2023-12-11

我有一个带有 pandas MultiIndex 的数据框:

In [1]: import pandas as pd
In [2]: multi_index = pd.MultiIndex.from_product([['CAN','USA'],['total']],names=['country','sex'])
In [3]: df = pd.DataFrame({'pop':[35,318]},index=multi_index)
In [4]: df
Out[4]:
               pop
country sex
CAN     total   35
USA     total  318

然后我从该 DataFrame 中删除一些行:

In [5]: df = df.query('pop > 100')

In [6]: df
Out[6]:
               pop
country sex
USA     total  318

但当我查阅 MutliIndex 时,它的级别中仍然包含这两个国家。

In [7]: df.index.levels[0]
Out[7]: Index([u'CAN', u'USA'], dtype='object')

我可以用一种相当奇怪的方式自己解决这个问题:

In [8]: idx_names = df.index.names

In [9]: df = df.reset_index(drop=False)

In [10]: df = df.set_index(idx_names)

In [11]: df
Out[11]:
               pop
country sex
USA     total  318

In [12]: df.index.levels[0]
Out[12]: Index([u'USA'], dtype='object')

但这看起来相当混乱。我失踪了还有更好的方法吗?


从版本pandas 0.20.0+ use MultiIndex.remove_unused_levels:

print (df.index)
MultiIndex(levels=[['CAN', 'USA'], ['total']],
           labels=[[1], [0]],
           names=['country', 'sex'])

df.index = df.index.remove_unused_levels()

print (df.index)
MultiIndex(levels=[['USA'], ['total']],
           labels=[[0], [0]],
           names=['country', 'sex'])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在对 pandas 的 DataFrame 进行切片后,如何更新 pandas MultiIndex 的级别? 的相关文章

随机推荐

  • R 中存在错误的单纯形函数的基本示例

    早上好 我有一个优化问题 我无法在 R 中解决 但在 Excel 中解决 我想优化以下情况 物资和人员的运输 航空公司x1可运输50吨物资和500人航空公司x2可运输150吨物资和250人 50x1 150x2 gt 900 gt 材料运输
  • NUnit 在 TFS 构建中加载失败

    我遇到了 构建部分成功 问题 并出现此错误 NUnit 无法加载 e Builds 184 CSTax 706USServices Test bin Calc Tests dll 但该项目中的所有单元测试都运行并且通过 全绿色 搭建环境 1
  • 如何使用 Jpackage 为 JavaFX 应用程序制作分发格式

    由于 jar 不再是分发 JavaFX 项目的最佳格式 我愿意使用 JPackage 工具来代替 但在阅读这篇文章后 https stackoverflow com a 68823040 4262407 我最终有多个问题 但首先 我只是想确
  • 在java中使用GZIPOutputStream发送压缩块

    我试图通过 java 套接字发送压缩的 HTML 文件 但浏览器显示一个空的 HTML 文件 问题是 当我尝试发送未压缩的 HTML 时 发现一切正常 是的 我确实相应地修改了 HTTP 标头 private void sendRespon
  • ASP Classic 无法在 IIS 7 上使用 FileSystemObject 访问虚拟目录

    我有一个经典的 ASP 网站 我们已从 IIS 6 迁移到 Win2k8 和 IIS 7 在网站文件夹结构中 有一个名为 Products 的虚拟目录 其中包含物理存储在同一服务器上其他位置的 JPG 在 Web 浏览器中 任何产品 JPG
  • 验证 HTML 中的信息 - 代码定位

    我无法让代码验证正常工作 我已经编写了姓名和电子邮件地址的验证 但是 我不知道在哪里插入命令以便在我的主 html 中调用 php 代码 我想我必须在这样的表单中添加一个操作 div class logo div div class log
  • 启动 angular.bootstrap 后取消引导? [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 尝试重新编译角度应用程序时遇到问题 有没有办法在调用 angular bootstrap 后取消引导 一旦我在已经引导的情况下执行 angular bootstrap 就会导致错误 T
  • 最小化时 pywin32 / pywinauto 在远程桌面中无法正常工作

    我有一个 Jenkins 管道 它在远程服务器中执行一个程序 该服务器使用 pywin 来操作应用程序以进行功能测试 当我打开远程桌面时 我的应用程序运行得很好 但是当我关闭远程桌面并从 Jenkins 运行它时 应用程序就会丢失 我所做的
  • PHP 短三元(“Elvis”)运算符与空合并运算符

    有人可以解释一下之间的区别吗三元运算符简写 and 空合并运算符 在 PHP 中 他们什么时候表现不同 什么时候表现相同 如果真的发生了 a b VS a b Elvis 如果第一个参数包含 true ish 值 则返回它 查看哪些值被认为
  • 如何将上传文件保存到另一台服务器

    我目前正在使用 django 现在我需要将用户上传的文件保存到另一台服务器 该服务器不是为 django 应用程序提供服务的服务器 该文件将保存到文件系统而不是数据库 有人可以告诉我该怎么做吗 默认 Django 行为是将文件保存在文件系统
  • C# 中图像过滤的高速性能

    我有位图 我想对我的位图应用中值过滤器 但我不能使用 GetPixel 和 SetPixel 因为速度对我来说非常重要 我需要非常快速的方法来做到这一点 也许可以通过Graphics DrawImage Image Point Rectan
  • 如何按两个条件对 ruby​​ 数组进行排序

    我想通过两个不同的条件对该数组进行排序 首先 我想按类型对数组进行排序 类型可以是 1 2 3 4 我想按 4 1 2 3 的顺序对它们进行排序 然后 在每种不同的类型中 我想按百分比降序对它们进行排序 因此 排序后的数组将如下所示
  • 如何强制 VB6 使用应用程序目录中的 DLL 和 OCX?

    我想将我的依赖文件放在应用程序目录中 我好像记得你可以强制VB6只使用本地目录中的文件 有什么提示吗 您可能还想尝试设置免注册COM为您的项目 有一个免费软件叫无人值守制作我的清单这将为您完成大部分工作
  • 如何从 RSS itunes 读取图像标签

    我尝试阅读我的 iTunes RSS 我可以阅读标题 甚至 itunes subtitle 但标签图像有问题 FEED
  • 如何用另一个子字符串替换字符串的一部分

    我需要将字符串 on 替换为 in strstr 函数返回一个指向字符串的指针 所以我认为将新值分配给该指针会起作用 但它没有 include
  • 如何使用 QDataStream 在 Python 中打开 bin 文件

    我有一个在应用程序中编码的 bin 文件 我需要访问该文件并将其转换为 csv 文件 我已获得文档 但不确定如何在 Python 中访问该文件的内容 以下是有关数据集如何序列化的一些详细信息 Datasets bin 是使用 Qt 的 QD
  • 使用 imshow 校正轴

    我试图使用 numpy meshgrid 和 pylab imshow 绘制等高线图 一开始使用我在 stackoverflow 上找到的一些技巧 效果非常好 谢谢家伙 D f scipy linspace 1e5 1e6 100 A sc
  • .NET 中是否有与 Mac OS X 文档模式表等效的内容?

    我的应用程序收到越来越多的请求 要求某些对话框的行为类似于Mac OS X 文档模态表功能 其中对话框仅适用于父控件 对话框 而不适用于整个应用程序 请参阅http en wikipedia org wiki Window dialog 当
  • 将带逗号的货币转换为数字

    我在数据框中有一列 如下所示 COL1 54 345 65 231 76 234 我如何将它转换成这样 COL1 54345 65231 76234 我一开始尝试的方式是 df COL1 lt as numeric as character
  • 在对 pandas 的 DataFrame 进行切片后,如何更新 pandas MultiIndex 的级别?

    我有一个带有 pandas MultiIndex 的数据框 In 1 import pandas as pd In 2 multi index pd MultiIndex from product CAN USA total names c