对Pandas MultiIndex(多重索引)详解


Posted in Python onNovember 16, 2018

创建多重索引

In [16]: df = pd.DataFrame(np.random.randn(3, 8), index=['A', 'B', 'C'], columns=index)

In [17]: df
Out[17]: 
first  bar     baz     foo     qux \
second  one  two  one  two  one  two  one 
A  0.895717 0.805244 -1.206412 2.565646 1.431256 1.340309 -1.170299 
B  0.410835 0.813850 0.132003 -0.827317 -0.076467 -1.187678 1.130127 
C  -1.413681 1.607920 1.024180 0.569605 0.875906 -2.211372 0.974466 

first    
second  two 
A  -0.226169 
B  -1.436737 
C  -2.006747

获得索引信息

get_level_values

In [23]: index.get_level_values(0)
Out[23]: Index(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'], dtype='object', name='first')

In [24]: index.get_level_values('second')
Out[24]: Index(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'], dtype='object', name='second')

基本索引

In [25]: df['bar']
Out[25]: 
second  one  two
A  0.895717 0.805244
B  0.410835 0.813850
C  -1.413681 1.607920

In [26]: df['bar', 'one']
Out[26]: 
A 0.895717
B 0.410835
C -1.413681
Name: (bar, one), dtype: float64

In [27]: df['bar']['one']
Out[27]: 
A 0.895717
B 0.410835
C -1.413681
Name: one, dtype: float64

使用reindex对齐数据

数据准备

In [11]: s = pd.Series(np.random.randn(8), index=arrays)

In [12]: s
Out[12]: 
bar one -0.861849
  two -2.104569
baz one -0.494929
  two 1.071804
foo one 0.721555
  two -0.706771
qux one -1.039575
  two 0.271860
dtype: float64

s序列加(0~-2)索引的值,因为s[:-2]没有最后两个的索引,所以为NaN.s[::2]意思是步长为1.

In [34]: s + s[:-2]
Out[34]: 
bar one -1.723698
  two -4.209138
baz one -0.989859
  two 2.143608
foo one 1.443110
  two -1.413542
qux one   NaN
  two   NaN
dtype: float64

In [35]: s + s[::2]
Out[35]: 
bar one -1.723698
  two   NaN
baz one -0.989859
  two   NaN
foo one 1.443110
  two   NaN
qux one -2.079150
  two   NaN
dtype: float64

以上这篇对Pandas MultiIndex(多重索引)详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
星球大战与Python之间的那些事
Jan 07 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
Jan 15 Python
Python获取指定字符前面的所有字符方法
May 02 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
Jun 21 Python
解决csv.writer写入文件有多余的空行问题
Jul 06 Python
pycharm访问mysql数据库的方法步骤
Jun 18 Python
python是否适合网页编程详解
Oct 04 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
Oct 30 Python
Python使用Pandas库常见操作详解
Jan 16 Python
PyQt5 文本输入框自动补全QLineEdit的实现示例
May 13 Python
python中查看.db文件中表格的名字及表格中的字段操作
Jul 07 Python
Python中lru_cache的使用和实现详解
Jan 25 Python
一百行python代码将图片转成字符画
Feb 19 #Python
Pandas GroupBy对象 索引与迭代方法
Nov 16 #Python
python实现指定字符串补全空格、前面填充0的方法
Nov 16 #Python
pandas 透视表中文字段排序方法
Nov 16 #Python
用Python实现数据的透视表的方法
Nov 16 #Python
pandas pivot_table() 按日期分多列数据的方法
Nov 16 #Python
python生成以及打开json、csv和txt文件的实例
Nov 16 #Python
You might like
图书管理程序(一)
2006/10/09 PHP
PHP下打开URL地址的几种方法小结
2010/05/16 PHP
PHP垃圾回收机制简单说明
2010/07/22 PHP
php 搜索框提示(自动完成)实例代码
2012/02/05 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
2014/07/08 PHP
PHP中两个float(浮点数)比较实例分析
2015/09/27 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
php 中htmlentities导致中文无法查询问题
2018/09/10 PHP
javascript CSS画图之基础篇
2009/07/29 Javascript
window.print打印指定div指定网页指定区域的方法
2014/08/04 Javascript
js+CSS实现弹出居中背景半透明div层的方法
2015/02/26 Javascript
JavaScript中5种调用函数的方法
2015/03/12 Javascript
Jquery全选与反选点击执行一次的解决方案
2015/08/14 Javascript
jQuery多级联动下拉插件chained用法示例
2016/08/20 Javascript
jQuery实现对象转为url参数的方法
2017/01/11 Javascript
javascript循环链表之约瑟夫环的实现方法
2017/01/16 Javascript
npm国内镜像 安装失败的几种解决方案
2017/06/04 Javascript
Node.js五大应用性能技巧小结(必须收藏)
2017/08/09 Javascript
基于vue+canvas的excel-like组件实例详解
2017/11/28 Javascript
vue-router路由懒加载和权限控制详解
2017/12/13 Javascript
BootstrapValidator验证用户名已存在(ajax)
2019/11/08 Javascript
在项目vue中使用echarts的操作步骤
2020/09/07 Javascript
总结Python编程中三条常用的技巧
2015/05/11 Python
Python3安装psycopy2以及遇到问题解决方法
2019/07/03 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
2020/01/09 Python
运动会800米加油稿
2014/02/22 职场文书
写自荐信的注意事项
2014/03/09 职场文书
理财投资建议书
2014/03/12 职场文书
中层干部培训方案
2014/06/16 职场文书
创建绿色学校先进个人材料
2014/08/20 职场文书
小学生国庆演讲稿
2014/09/05 职场文书
追悼会家属答谢词
2015/09/29 职场文书
Java中PriorityQueue实现最小堆和最大堆的用法
2021/06/27 Java/Android
vue使用wavesurfer.js解决音频可视化播放问题
2022/04/04 Vue.js