在Pandas中给多层索引降级的方法


Posted in Python onNovember 16, 2018

# 背景介绍 通常我们不会在Pandas中主动设置多层索引,但是如果一个字段做多个不同的聚合运算, 比如sum, max这样形成的Column Level是有层次的,这样阅读非常方便,但是对编程定位比较麻烦. # 数据准备

import pandas as pd
import numpy as np
df = pd.DataFrame(np.arange(0, 14).reshape(7,2),columns =['a','b'] )
df.a = df.a %3
df['who'] = 'Bob'
df.loc[df.a%4==0,'who'] = 'Alice'

a b who
0 0 1 Alice
1 2 3 Bob
2 1 5 Bob
3 0 7 Alice
4 2 9 Bob
5 1 11 Bob
6 0 13 Alice

# 对一个字段同时用3个聚合函数

gp1 = df.groupby('who').agg({'b':[sum,np.max, np.min], 'a':sum})
gp1
b a
sum amax amin sum
who
Alice 8.0 7.0 1.0 0
Bob 28.0 11.0 3.0 6

索引是有层次的,虚要通过下面这种方式,个人感觉不是很方便.下面介绍2种方法来解决这个问题

#有层次的索引访问方法
gp1.loc['Bob', ('b', 'sum')]
28.0

# 直接去除一层

gp2 = gp1.copy(deep=True)
gp2.columns = gp1.columns.droplevel(0)
gp2

sum amax amin sum
who
Alice 8.0 7.0 1.0 0
Bob 28.0 11.0 3.0 6

# 把2层合并到一层

gp3 = gp1.copy(deep=True)
gp3.columns = ["_".join(x) for x in gp3.columns.ravel()]
gp3

b_sum b_amax b_amin a_sum
who
Alice 8.0 7.0 1.0 0
Bob 28.0 11.0 3.0 6

以上这篇在Pandas中给多层索引降级的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现的解析crontab配置文件代码
Jun 30 Python
python3实现读取chrome浏览器cookie
Jun 19 Python
Python实现的字典值比较功能示例
Jan 08 Python
Python 通过调用接口获取公交信息的实例
Dec 17 Python
浅谈python编译pyc工程--导包问题解决
Mar 20 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
Mar 27 Python
Python之数据序列化(json、pickle、shelve)详解
Aug 30 Python
CentOS7下安装python3.6.8的教程详解
Jan 03 Python
Tensorflow 实现分批量读取数据
Jan 04 Python
Python+PyQt5+MySQL实现天气管理系统
Jun 16 Python
PyQt实现计数器的方法示例
Jan 18 Python
上手简单,功能强大的Python爬虫框架——feapder
Apr 27 Python
Python 面试中 8 个必考问题
Nov 16 #Python
python 使用值来排序一个字典的方法
Nov 16 #Python
pandas通过索引进行排序的示例
Nov 16 #Python
在pandas多重索引multiIndex中选定指定索引的行方法
Nov 16 #Python
对Pandas MultiIndex(多重索引)详解
Nov 16 #Python
一百行python代码将图片转成字符画
Feb 19 #Python
Pandas GroupBy对象 索引与迭代方法
Nov 16 #Python
You might like
PHP数组实例总结与说明
2011/08/23 PHP
PHP易混淆知识整理笔记
2015/09/24 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
基本jquery的控制tabs打开的数量的代码
2010/10/17 Javascript
jQuery的Ajax的自动完成功能控件简要说明
2013/02/22 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
2013/11/21 Javascript
JS实现单行文字不间断向上滚动的方法
2015/01/29 Javascript
JavaScript 匿名函数和闭包介绍
2015/04/13 Javascript
浅谈javascript中的DOM方法
2015/07/16 Javascript
JS模拟简易滚动条效果代码(附demo源码)
2016/04/05 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
分享十三个最佳JavaScript数据网格库
2017/04/07 Javascript
vue中v-for加载本地静态图片方法
2018/03/03 Javascript
AngularJS 监听变量变化的实现方法
2018/10/09 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
2019/08/20 Javascript
[09:31]2016国际邀请赛中国区预选赛Yao赛后采访 答题送礼
2016/06/27 DOTA
[02:05:03]完美世界DOTA2联赛循环赛 LBZS VS Matador BO2 10.28
2020/10/28 DOTA
Python Flask基础教程示例代码
2018/02/07 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
Python编程快速上手——Excel表格创建乘法表案例分析
2020/02/28 Python
Python dict的常用方法示例代码
2020/06/23 Python
Python中logging日志记录到文件及自动分割的操作代码
2020/08/05 Python
Python实现上下文管理器的方法
2020/08/07 Python
浅谈python 类方法/静态方法
2020/09/18 Python
html5使用canvas画三角形
2014/12/15 HTML / CSS
HTML5 drag和drop具体使用详解
2021/01/18 HTML / CSS
linux面试题参考答案(6)
2014/08/29 面试题
公司面试感谢信
2014/02/01 职场文书
教师对学生的寄语
2014/04/03 职场文书
网上祭先烈心得体会
2014/09/01 职场文书
安全生产月标语
2014/10/07 职场文书
班主任2015新年寄语
2014/12/08 职场文书
监察建议书
2015/02/04 职场文书
寒假安全保证书
2015/02/28 职场文书
退税申请报告怎么写
2015/05/18 职场文书
PostgreSQL出现死锁该如何解决
2022/05/30 PostgreSQL