在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列出目录下指定文件与子目录的方法
Jul 03 Python
python机器学习理论与实战(一)K近邻法
Jan 28 Python
Python实现读取字符串按列分配后按行输出示例
Apr 17 Python
Python3使用正则表达式爬取内涵段子示例
Apr 22 Python
浅谈Python中重载isinstance继承关系的问题
May 04 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
Jan 04 Python
python文本数据处理学习笔记详解
Jun 17 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
Sep 24 Python
python torch.utils.data.DataLoader使用方法
Apr 02 Python
Python字符串格式化常用手段及注意事项
Jun 17 Python
读取nii或nii.gz文件中的信息即输出图像操作
Jul 01 Python
python 模块重载的五种方法
Apr 24 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 删除无限级目录与文件代码共享
2008/11/22 PHP
Android AsyncTack 异步任务实例详解
2016/11/02 PHP
文本加密解密
2006/06/23 Javascript
jQuery 学习 几种常用方法
2009/06/11 Javascript
Jquery 组合form元素为json格式,asp.net反序列化
2009/07/09 Javascript
jQuery源码分析-05异步队列 Deferred 使用介绍
2011/11/14 Javascript
基于JQuery的一句话搞定手风琴菜单
2012/09/14 Javascript
表单验证正则表达式实例代码详解
2015/11/09 Javascript
jQuery实现网页顶部固定导航效果代码
2015/12/24 Javascript
jquery模拟实现鼠标指针停止运动事件
2016/01/12 Javascript
Angular.js回顾ng-app和ng-model使用技巧
2016/04/26 Javascript
JavaScript SHA-256加密算法详细代码
2016/10/06 Javascript
Angular的$http与$location
2016/12/26 Javascript
JS库之ParticlesJS使用简介
2017/09/12 Javascript
echarts学习笔记之图表自适应问题详解
2017/11/22 Javascript
JS实现根据详细地址获取经纬度功能示例
2019/04/16 Javascript
微信小程序清空输入框信息与实现屏幕往上滚动的示例代码
2020/06/23 Javascript
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
pycharm远程调试openstack的图文教程
2017/11/21 Python
详解python上传文件和字符到PHP服务器
2017/11/24 Python
磁盘垃圾文件清理器python代码实现
2020/08/24 Python
Python字符串匹配之6种方法的使用详解
2019/04/08 Python
解决Python内层for循环如何break出外层的循环的问题
2019/06/24 Python
python对Excel按条件进行内容补充(推荐)
2019/11/24 Python
通过Turtle库在Python中绘制一个鼠年福鼠
2020/02/03 Python
Django ORM实现按天获取数据去重求和例子
2020/05/18 Python
CSS3制作酷炫的条纹背景
2017/11/09 HTML / CSS
魔声耳机官方网站:Monster是世界第一品牌的高性能耳机
2016/10/26 全球购物
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
javascript实现用户必须勾选协议实例讲解
2021/03/24 Javascript
应届大学生自荐书
2014/06/17 职场文书
计算机系统管理员求职信
2014/06/20 职场文书
幼儿园门卫岗位职责范本
2014/07/02 职场文书
2014年高中班主任工作总结
2014/11/08 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书
MySQL 如何设计统计数据表
2021/06/15 MySQL