在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编写简单的画图板程序的示例教程
Dec 08 Python
神经网络理论基础及Python实现详解
Dec 15 Python
python编程培训 python培训靠谱吗
Jan 17 Python
Django项目开发中cookies和session的常用操作分析
Jul 03 Python
JavaScript中的模拟事件和自定义事件实例分析
Jul 27 Python
python实现zabbix发送短信脚本
Sep 17 Python
python 用下标截取字符串的实例
Dec 25 Python
python实现在函数图像上添加文字和标注的方法
Jul 08 Python
python读写csv文件并增加行列的实例代码
Aug 01 Python
详解Python并发编程之从性能角度来初探并发编程
Aug 23 Python
Python pip安装模块提示错误解决方案
May 22 Python
Python 视频画质增强
Apr 28 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 adodb连接带密码access数据库实例,测试成功
2008/05/14 PHP
PHP实现简单ajax Loading加载功能示例
2016/12/28 PHP
JavaScript的面向对象方法以及差别
2008/03/31 Javascript
IE6下CSS图片缓存问题解决方法
2010/12/09 Javascript
jquery中ajax学习笔记3
2011/10/16 Javascript
基于jQuery实现文本框缩放以及上下移动功能
2014/11/24 Javascript
浅谈angular.js中实现双向绑定的方法$watch $digest $apply
2015/10/14 Javascript
JS与jQ读取xml文件的方法
2015/12/08 Javascript
JS如何判断json是否为空
2016/07/06 Javascript
jQuery简单判断值是否存在于数组中的方法示例
2018/04/17 jQuery
微信小程序网络封装(简单高效)
2018/08/06 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
JS数组方法shift()、unshift()用法实例分析
2020/01/18 Javascript
vue组件入门知识全梳理
2020/09/21 Javascript
Python字符串处理之count()方法的使用
2015/05/18 Python
Python文件读取的3种方法及路径转义
2015/06/21 Python
windows10系统中安装python3.x+scrapy教程
2016/11/08 Python
详解Python多线程
2016/11/14 Python
python获取网页中所有图片并筛选指定分辨率的方法
2018/03/31 Python
Python简单定义与使用二叉树示例
2018/05/11 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
2018/08/05 Python
详谈Python 窗体(tkinter)表格数据(Treeview)
2018/10/11 Python
Python 窗体(tkinter)按钮 位置实例
2019/06/13 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
Python如何通过百度翻译API实现翻译功能
2020/04/02 Python
使用python脚本自动生成K8S-YAML的方法示例
2020/07/12 Python
用React加CSS3实现微信拆红包动画效果
2017/03/13 HTML / CSS
办公室文秘自我鉴定
2013/09/21 职场文书
学生社团文化节开幕式主持词
2014/03/28 职场文书
2014年寒假社会实践活动心得体会
2014/04/07 职场文书
教师中国梦演讲稿
2014/04/23 职场文书
冬季安全检查方案
2014/05/23 职场文书
工程承包协议书范本
2014/09/29 职场文书
2014年初级职称工作总结
2014/12/08 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
边城读书笔记
2015/06/29 职场文书