在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 相关文章推荐
Python3.x和Python2.x的区别介绍
Feb 12 Python
手动实现把python项目发布为exe可执行程序过程分享
Oct 23 Python
python数字图像处理之骨架提取与分水岭算法
Apr 27 Python
浅谈python日志的配置文件路径问题
Apr 28 Python
解决python ogr shp字段写入中文乱码的问题
Dec 31 Python
简单了解python协程的相关知识
Aug 31 Python
从numpy数组中取出满足条件的元素示例
Nov 26 Python
python文件绝对路径写法介绍(windows)
Dec 25 Python
python输出pdf文档的实例
Feb 13 Python
Django静态资源部署404问题解决方案
May 11 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
Jul 30 Python
Python中Selenium对Cookie的操作方法
Jul 09 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语言流程控制中的主动与被动
2012/11/05 PHP
用PHP实现浏览器点击下载TXT文档的方法详解
2013/06/02 PHP
php获得用户ip地址的比较不错的方法
2014/02/08 PHP
php实现的替换敏感字符串类实例
2014/09/22 PHP
如何使用php实现评委评分器
2015/07/31 PHP
php获取POST数据的三种方法实例详解
2016/12/20 PHP
php判断目录存在的简单方法
2019/09/26 PHP
解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题
2019/10/14 PHP
javascript FormatNumber函数实现方法
2008/12/30 Javascript
jQuery对象[0]是什么含义?
2010/07/31 Javascript
jQuery使用模式窗口实现在主页面和子页面中互相传值的方法
2016/03/01 Javascript
Vue.js每天必学之Class与样式绑定
2016/09/05 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
javascript实现一个网页加载进度loading
2017/01/04 Javascript
jquery仿ps颜色拾取功能
2017/03/08 Javascript
jQuery Validate 无法验证 chosen-select元素的解决方法
2017/05/17 jQuery
详解vue-cli与webpack结合如何处理静态资源
2017/09/19 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
2018/09/13 Javascript
浅谈一种让小程序支持JSX语法的新思路
2019/06/16 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
2019/10/23 jQuery
js中火星坐标、百度坐标、WGS84坐标转换实现方法示例
2020/03/02 Javascript
python实现class对象转换成json/字典的方法
2016/03/11 Python
Python实现一个Git日志统计分析的小工具
2017/12/14 Python
python读取文本绘制动态速度曲线
2018/06/21 Python
Python爬取豆瓣数据实现过程解析
2020/10/27 Python
全网最详细的PyCharm+Anaconda的安装过程图解
2021/01/25 Python
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
华三通信H3C面试题
2015/05/15 面试题
药品采购员岗位职责
2014/02/08 职场文书
植树节口号
2014/06/21 职场文书
初中教师个人工作总结
2015/02/10 职场文书
情况说明书怎么写
2015/10/08 职场文书
少先队大队委竞选口号
2015/12/25 职场文书
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫
疑《守望先锋2》A测截图泄露 或将推出新模式、新界面
2022/04/03 其他游戏
使用CSS定位HTML元素的实现方法
2022/07/07 HTML / CSS