多维度索引

1 前言

比如我们有这么一个DataFrame

data = pd.DataFrame(np.random.randn(5),index=[['a', 'a', 'a', 'd','d'],[1, 2, 3, 1, 2]])

那么此时有两列index ,这就是multi-index

mindex = data.index
mindex
'''
MultiIndex([('a', 1),('a', 2),('a', 3),('d', 1),('d', 2)],)
'''

2 属性

2.1 levels

不同层级上的属性值

mindex.levels
#FrozenList([['a', 'd'], [1, 2, 3]])

2.2 codes

不同层级上索引元素的位置

mindex.codes
# FrozenList([[0, 0, 0, 1, 1], [0, 1, 2, 0, 1]])

表示第一个索引('a','d') 0号(也就是'a')对应的是第一个列表元素为0的行(前三行);1号(也就是'd')对应的是第一个列表元素为1的行(后两行)

第二个索引(1 2 3) 0号(也就是1)对应的是第二个列表元素为0的行(第一行第四行);1号(也就是'2')对应的是第二个列表元素为1的行(第二行第五行);2号(也就是3)对应的是第二个列表元素为2的行(第三行)

2.3 names

索引的名称(我们这里是没有)

mindex.names
#FrozenList([None, None])

3 构建多层索引

3.1 直接DataFrame 构建

data = pd.DataFrame(np.random.randn(5),index=[['a', 'a', 'a', 'd','d'],[1, 2, 3, 1, 2]])
data'''0
a   1   -0.4793182  -0.4715943  -1.550214
d   1   0.3294462   -0.607804
''''

3.2 从列表转化

两个列表相同索引的元素组成一个index

mindex = pd.MultiIndex.from_arrays([['a-', 'a-', 'a-', 'a-', 'd-'],[-1, -2, -3, -1, -2]])data.reindex(mindex)
'''0
a-  -1  NaN-2   NaN-3   NaN-1   NaN
d-  -2  NaN
'''

3.3 从元组转化

mindex = pd.MultiIndex.from_tuples([('a',1), ('a',2), ('b',1)])
data.reindex(mindex)
'''0
a   1   -1.407190
2   1.193368
b   1   NaN
'''

每一个元组中的元素组成一个index

3.4 使用两个列表的笛卡尔乘积转化

mindex = pd.MultiIndex.from_product([['a','d'], [1,2]])
data.reindex(mindex)'''0
a   1   -1.4071902  1.193368
d   1   -0.3431652  -0.112372
'''

4 转换多维索引的顺序

将第0维和第一维的索引交换

data.swaplevel(0,1)
'''0
1   a   -1.407190
2   a   1.193368
3   a   -0.352287
1   d   -0.343165
2   d   -0.112372
'''

pandas 笔记:multi-index相关推荐

  1. pandas笔记(pandas Data Structures)

    pandas笔记(pandas Data Structures) 生信start_site已关注 32020.06.15 03:02:37字数 766阅读 509 pandas包含数据结构和数据操作工 ...

  2. pandas不显示index_大熊猫 - 不在索引中(pandas - not in index)

    大熊猫 - 不在索引中(pandas - not in index) 我正在尝试替换列'A'中的nan值(第一行出现在第9行),前一个值是前一行 y = len(df) for i in range( ...

  3. pandas系列之index小记

    pandas系列之index 1.1 重置索引 常见索引drop用法 import pandas as pd # 数据准备 df = pd.DataFrame(np.arange(20).reshap ...

  4. 【Python基础】Pandas笔记---概述与数据结构

    点击上方"潜心的Python小屋"关注我们,第一时间推送优质文章. 前言 大家好,我是潜心.因为最近做实验发现Pandas的数据处理技术忘记了,所以准备系统的概述一下Pandas的 ...

  5. 优达学城Numpy与Pandas笔记

    此篇为优达学城数据分析入门第二课笔记网址 基本操作 import numpy as np# First 20 countries with employment data countries = np ...

  6. 系统重温Pandas笔记:(十)时序数据

    文章目录 写在前面 一.时序中的基本对象 二.时间戳 1. Timestamp的构造与属性 2. Datetime序列的生成 [练一练] 3. dt对象 4. 时间戳的切片与索引 三.时间差 1. T ...

  7. 系统重温Pandas笔记:(七)缺失数据

    文章目录 写在前面 一.缺失值的统计和删除 1. 缺失信息的统计 2. 缺失信息的删除 二.缺失值的填充和插值 1. 利用fillna进行填充 [练一练] 2. 插值函数 三.Nullable类型 1 ...

  8. pandas笔记:根据列索引名称/行索引名称 对列重新排序

    源数据: import pandas as pd frame=pd.DataFrame(np.arange(12).reshape((4,3)),columns=['c','a','b'],index ...

  9. 【Python基础】Pandas笔记---深入Groupby,它的功能没有你想的这么简单

    点击上方"潜心的Python小屋"关注我们,第一时间推送优质文章. 前言 大家好,我是潜心.上篇文章提到了Groupby,但其中举例的代码有点问题,在提取序列时用到了for循环,效 ...

  10. 【Python基础】Pandas笔记---通过比赛整理出的10条Pandas实用技巧

    点击上方"潜心的Python小屋"关注我们,第一时间推送优质文章. 前言 大家好,我是潜心.最近还在参加某比赛,将pandas对数据预处理的方法进行了总结,以下列出的10条是我觉得 ...

最新文章

  1. navcat设置oracle表主键自增_初识 Oracle 表空间设置与管理
  2. 《飞鸽传书2007怎么用》这种即时通讯技术已开始普及
  3. jieba中文处理的学习
  4. Numpy的学习6-深浅赋值(copydeep copy)
  5. 20200114每日一句
  6. Python开发的一个IDE推荐,Sublime Text 3
  7. 小米选择了总是打开方式_小米更改默认程序 小米修改默认程序的打开方式
  8. 【数据攻略】 假设检验 | 统计功效 | 最小样本量
  9. 最小二乘法曲线拟合(代码注释)
  10. 2020认证杯第二阶段选提建议
  11. 360 自动 html 极速模式,用Meta标签代码让360双核浏览器默认极速模式打开网站不是兼容模式(顺带解决很多兼容性问题)...
  12. Maven详解【Idea搭建Maven项目、Maven常用指令、Maven的传递性和依赖性、排除依赖】
  13. Unity显示360度全景照片
  14. 针对RK3328平台搭建支持KVM的Linux环境
  15. centos7上面安装geany编辑器
  16. Failed to check the status of the service. No provider available for the service【已解决】
  17. 深入理解非阻塞同步IO和非阻塞异步IO
  18. 2021年MathorCup高校数学建模挑战赛——大数据竞赛A题
  19. 海康威视2019年校园招聘内推码(2019届春招、2020届实习/秋招)
  20. MeeGo的中国救亡之路:Jolla与迪信通牵手合作

热门文章

  1. jQuery Mobile学习笔记
  2. 路由器交换机命令总结
  3. 探秘Tomcat——一个简易的Servlet容器
  4. Learn Python the Hard Way: while循环
  5. JAVA _构造函数
  6. Private strand flush not complete
  7. MSP430学习笔记6-动态数码管的显示
  8. 《剑指offer》c++版本 6.从尾到头打印链表
  9. awaitUntil() 方法的使用
  10. python gui 可视化开发工具_python开发的gui漂亮吗