首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何切开一个MultiIndex熊猫的DataFrame?

如何切开一个MultiIndex熊猫的DataFrame?
EN

Stack Overflow用户
提问于 2021-03-11 18:15:27
回答 4查看 504关注 0票数 1

假设您有以下数据帧:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [1]: import pandas as pd
In [2]: index = [('California',2000),('California', 2010), ('New York', 2000),
 ('New York', 2000), ('New York', 2010), ('Texas', 2000), ('Texas',2010)]
In [3]: populations = [33871648, 37253956,189765457,19378102,20851820,25145561
     ...: ]
In [4]: pop_df = pd.DataFrame(populations,index=index,columns=["Data"])
In [5]: pop_df
Out[5]:
                         Data
(California, 2000)   33871648
(California, 2010)   37253956
(New York, 2000)    189765457
(New York, 2010)     19378102
(Texas, 2000)        20851820
(Texas, 2010)        25145561

如何对此数据帧进行索引以获取所有加州数据?我尝试了下面的方法,得到了一个键错误pop_df[('California,)]。因此,我执行了以下命令,但仍然得到一个键错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [6]: index2 = pd.MultiIndex.from_tuples(index)
In [7]: pop_df2 = pop_df.reindex(index2)
In [8]: pop_df2
Out[8]:
                      Data
California 2000   33871648
           2010   37253956
New York   2000  189765457
           2010   19378102
Texas      2000   20851820
           2010   25145561

In [9]: pop_df2['California']

pop_df2['California']
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
~/opt/miniconda3/lib/python3.8/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
   3079             try:
-> 3080                 return self._engine.get_loc(casted_key)
   3081             except KeyError as err:

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'California'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
<ipython-input-141-18a1a54664b0> in <module>
----> 1 pop_df2['California']

~/opt/miniconda3/lib/python3.8/site-packages/pandas/core/frame.py in __getitem__(self, key)
   3022             if self.columns.nlevels > 1:
   3023                 return self._getitem_multilevel(key)
-> 3024             indexer = self.columns.get_loc(key)
   3025             if is_integer(indexer):
   3026                 indexer = [indexer]

~/opt/miniconda3/lib/python3.8/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
   3080                 return self._engine.get_loc(casted_key)
   3081             except KeyError as err:
-> 3082                 raise KeyError(key) from err
   3083
   3084         if tolerance is not None:

KeyError: 'California'

索引到多索引数据帧的正确方法是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-03-11 18:20:29

你想要.loc[]。如果没有它,您将查找名为“California”的列,而不是索引标签。

顺便说一下,您的输入中有一个拼写错误,您正在复制索引条目。下面是完整的代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [1]: import pandas as pd
   ...: index = [
   ...: ('California',2000),
   ...: ('California', 2010),
   ...: ('New York', 2000),
   ...: ('New York', 2010),
   ...: ('Texas', 2000),
   ...: ('Texas',2010)
   ...: ]
   ...: populations = [33871648, 37253956,189765457,19378102,20851820,25145561]
   ...: pop_df = pd.DataFrame(populations,index=index,columns=["Data"])
   ...: index2 = pd.MultiIndex.from_tuples(index)
   ...: pop_df2 = pop_df.reindex(index2)
   ...: pop_df2.loc['California']
Out[1]: 
          Data
2000  33871648
2010  37253956
票数 2
EN

Stack Overflow用户

发布于 2021-03-11 18:19:03

df['somename']查找列,df.loc['somename']查找索引。您需要:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pop_df2.loc['California']

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
          Data
2000  33871648
2010  37253956

您还可以使用xs选项,它允许在不同级别上进行切片,并保持完整的索引层次结构:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# default `drop_level` is True
# which behave like `.loc` on top level
pop_df.xs('California', level=0, drop_level=False)

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
                     Data
California 2000  33871648
           2010  37253956

或第二层上的xs

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pop_df.xs(2010, level=1, drop_level=False)

为您提供:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
                     Data
California 2010  37253956
New York   2010  19378102
Texas      2010  25145561
票数 2
EN

Stack Overflow用户

发布于 2021-03-11 18:27:55

尝试使用IndexSlice

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pop_df2.loc[pd.IndexSlice[['California'],],]
Out[52]: 
                     Data
California 2000  33871648
           2010  37253956
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66588217

复制
相关文章
『JVM』我不想知道我是怎么来滴,我就想知道我是怎么没滴
所谓的 JVM 崩溃,一般情况下就是指内存溢出,也就是 OutOfMemoryError 和 StackOverflowError。另外还有一种情况就是堆外内存占用过大,这种情况会导致 JVM 所在机器的内存被撑爆,从而导致机器重启等异常情况发生,我们把这种情况叫做内存泄漏。
古时的风筝
2020/11/11
6560
『JVM』我不想知道我是怎么来滴,我就想知道我是怎么没滴
别了,我的App?我的小程序来了!
“ 小程序任务栏功能升级,支持用户打开最近使用过的小程序和「我的小程序」。同时,原有的星标功能,将升级为「我的小程序」,微信用户可以通过多种方式进行添加和排序。” 01 — 小程序任务栏升级 为了让
腾讯大讲堂
2018/07/18
8170
我忽略过的或者未知的,记忆下
 .Net里面自带了一个语音类库:System.Speech,调用系统的语音功能,就能实现string到语音的转换:
Jerremy
2022/05/09
4760
我想知道到底谁错了
最近在做GEO数据挖掘的文章复现,文章标题是“Identification of Hub Genes and Pathways of Triple Negative Breast Cancer by Expression Profiles Analysis”,链接如下:https://pubmed.ncbi.nlm.nih.gov/33688252/
生信技能树
2021/07/06
3910
我在大厂写React,学到了什么?
我工作中的技术栈主要是 React + TypeScript,这篇文章我想总结一下如何在项目中运用 React 的一些技巧解决一些实际问题,本文中使用的代码都是简化后的,不代表生产环境。生产环境的代码肯定比文中的例子要复杂很多,但是简化后的思想应该是相通的。
ssh_晨曦时梦见兮
2020/10/27
1.5K0
我的优势是什么?
之前总是喜欢去找自己的缺点,然而随着对互联网的认知越来越深入,逐渐发现,最应该做的是让自己的优势更明显,而不是总想着去补短板。
数据仓库践行者
2022/11/25
6300
我怀疑遇到了假的CMDB
每次读到配置管理相关的书籍时,我总在想:“这些定义很精准,流程也很残缺,但这不是真正的难题。”对于一个配置管理者来说,真正的难题不是绘制“庞大而精美”的数据模型,不是design“全天候、无死角”的管控流程,而是如何促进数据的消费,并在消费过程中持续的改善数据质量。 我在华为从事了七年配置管理工作,见证了CMDB从一个半死不活的边缘零碎逐渐成为运维的核心。 离开华为后,我无机会看到很多CMDB项目,才发现原来像华为这样将CMDB真合理成运维中重要一环的并不多。大部分CMDB项目,不是以失败告终,就是在失
BGBiao
2018/02/26
6.3K0
我怀疑遇到了假的CMDB
我在测试中遇到app崩溃的现象怎么办?
( 不同情况虽然没有严格意义上区分开引起原因,但是都有侧重。在之后的工作中,我会实时补充统计。)
我去热饭
2022/05/18
1.6K0
我在ThoughtWorks中的敏捷实践
E项目是一个在线的物资跟踪监控系统。由ThoughtWorks团队为客户提供的一套完善的软件交付服务。
袁慎建@ThoughtWorks
2018/09/29
2.1K0
我在ThoughtWorks中的敏捷实践
久违了,我我我我的童年照!
少年的肩应该担起清风明月和草长莺飞 眼里应该藏下星辰大海和万丈光芒 而当少年已成人 虽已忘却了诗篇和牧笛 但心中偶尔也会渴望那片原野 不管当年的风在不在 他们心中仍保留着少年最灿烂的样子 恰逢儿童节,我们发自心底的问: 你,还记得那个少年吗? 泛黄照片里的儿时模样 还回得去吗? 带着童心出发,每一程都是童话 值此六一儿童节 祝腾讯云AI的大小朋友们儿童节快乐! 快乐之余,识别下方二维码 腾讯云AI带你一键回到你的童年时代 「文末有体验海报可转发给家人朋友们一起Pick」 Pick一张AI小姐
腾讯云AI
2021/06/02
1.6K0
我对JavaScript中this的一些理解
因为日常工作中经常使用到this,而且在JavaScript中this的指向问题也很容易让人混淆一部分知识。 这段时间翻阅了一些书籍也查阅了网上一些资料然后结合自己的经验,为了能让自己更好的理解this,进而总结一篇文章。
九旬
2020/10/23
4320
从 React 源码的类型定义中,我学到了什么?
今天看了下 React 的类型定义,也就是 @types/react 包下的 index.d.ts,发现了一些有趣的写法。
神说要有光zxg
2022/04/12
8320
从 React 源码的类型定义中,我学到了什么?
我理解的敏捷是什么
敏捷,近几年非常火热的一个词,当前团队也在做新一轮的敏捷理论导入。后续会持续输出相关的内容。现在,我们就从头开始吧,聊聊个人对敏捷的理解。
CKL的思考
2023/02/01
3540
在线等,我的 adb 找不到了!
在您下载了 Android Studio 并且安装了 SDK 后,如果想要进行诸如开启 Firebase 调试模式 这类的操作,相关教程可能会告诉您要在终端输入 "adb"。您若照做,便可能会出现以下内容:
Android 开发者
2022/03/09
1.9K0
在线等,我的 adb 找不到了!
原创 | 我在git merge的时候遇到了冲突,怎么解决?
大家好,今天来和大家聊一个老生常谈的问题,我们在使用git merge的时候遇到了冲突,怎么办?
TechFlow-承志
2020/09/27
6.9K0
原创 | 我在git merge的时候遇到了冲突,怎么解决?
我把微信小程序转为App上架到了App Store
先说说背景,之前在微信开发了一个工具类的小程序,小程序的日访问量和用户数还可以,但发现随着用户量的累积,一方面发现对于这类工具小程序,受限于微信小程序平台规则,很难对用户进行更深入的运营,用户流失问题也将逐渐凸显出来。另一方面,其实自己一直想去系统的开发一个App,但又限于对原生技术掌握的不够深入所以一直没有上手去做。
Onegun
2022/08/25
1K0
我把微信小程序转为App上架到了App Store
开源的 Web 框架哪个快?我在 GitHub 找到了答案
在开源这片自由的土地上,孕育了太多开源 Web 框架。我在 GitHub 上搜了一下“web framework”关键字显示有 56000+ 匹配的开源项目,它们百花齐放各有特色,覆盖多种语言。
HelloGitHub
2021/09/10
6820
开源的 Web 框架哪个快?我在 GitHub 找到了答案
从修复 Kubernetes 集群中,我学到了什么
作者 | Loraine Lawson 译者 | Sambodhi 策划 | Tina 人们都很吝啬。这是 David Flanagan 在他的 YouTube 系列节目“Klustered”中修复了 50 多个故意破坏的 Kubernetes 集群所学到的第一件事。 在一个案例中,提交者用 unicode doppleganger 替换了一个'c'字符——它在终端输出上看起来与 c 相同——从而导致了一个错误,这造成了 Flanagan 对自己以及对其修补集群的能力产生了怀疑。 Flanagan
深度学习与Python
2023/03/29
3510
从修复 Kubernetes 集群中,我学到了什么
这款Typora主题惊艳到了我
typora相信大家都用过,很多人习惯了typora默认的github主题,但我今天看到一个主题。说实话激起了我要设计自己的一款主题的欲望。就有了今天的这个主题。
徐建国
2021/12/22
1.4K0
这款Typora主题惊艳到了我
我做的一些项目
我做的一些项目 Posted October 16, 2018 工作五年, 从事运维开发三年, 我做了很多项目, 在此记录下。 个人项目 requestMeta cornus yanyue chinese-poetry poetry-calendar jianshuHot JackeyGao.github.io.bakup django-vuejs WeUnsplash heroText csvSQL CMDAnalysis dbInterface markblog Teambition 2017.0
用户1416054
2018/10/22
1K1

相似问题

Google App Engine:我的地址是什么?

13

我经常收到元组错误,我想知道它们是什么,以及如何修复它们。

11

我在PHP应用程序中收到了下面列出的警告,我想知道如何修复它:

32

我的app Engine Memcache会限制我的应用程序的扩展吗?

33

我得到了未知的错误:请求失败,状态代码401。

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文