在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 变量类型及命名规则介绍
Jun 08 Python
Python中的闭包实例详解
Aug 29 Python
浅谈pandas中shift和diff函数关系
Apr 08 Python
详谈python3中用for循环删除列表中元素的坑
Apr 19 Python
机器学习之KNN算法原理及Python实现方法详解
Jul 09 Python
tensorflow学习教程之文本分类详析
Aug 07 Python
python+unittest+requests实现接口自动化的方法
Nov 29 Python
python集合删除多种方法详解
Feb 10 Python
Python文件读写w+和r+区别解析
Mar 26 Python
python3.7调试的实例方法
Jul 21 Python
Django websocket原理及功能实现代码
Nov 14 Python
python实现简单区块链结构
Apr 25 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 Google的translate API代码
2008/12/10 PHP
UCenter Home二次开发指南
2009/05/28 PHP
jQuery 源码分析笔记
2011/05/25 PHP
PHP验证码函数代码(简单实用)
2013/09/29 PHP
PHP函数in_array()使用详解
2014/08/20 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
2015/11/23 PHP
Yii2框架数据库简单的增删改查语法小结
2016/08/31 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
javascript使用百度地图api和html5特性获取浏览器位置
2014/01/10 Javascript
使用GruntJS构建Web程序之合并压缩篇
2014/06/06 Javascript
使用js画图之画切线
2015/01/12 Javascript
JS内部事件机制之单线程原理
2018/07/02 Javascript
实例详解BootStrap的动态模态框及静态模态框
2018/08/13 Javascript
小程序实现页面顶部选项卡效果
2018/11/06 Javascript
jQuery实现滑动星星评分效果(每日分享)
2019/11/13 jQuery
Express 配置HTML页面访问的实现
2020/11/01 Javascript
解决vuex刷新数据消失问题
2020/11/12 Javascript
浅谈Python的Django框架中的缓存控制
2015/07/24 Python
Python ldap实现登录实例代码
2016/09/30 Python
快速查询Python文档方法分享
2017/12/27 Python
PyQt5每天必学之像素图控件QPixmap
2018/04/19 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
2018/05/30 Python
Python3.4学习笔记之列表、数组操作示例
2019/03/01 Python
python同义词替换的实现(jieba分词)
2020/01/21 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
Python实现文件压缩和解压的示例代码
2020/08/12 Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
2020/09/29 Python
Hunkemöller西班牙:欧洲最大的内衣连锁店
2018/08/15 全球购物
什么是Linux虚拟文件系统VFS
2015/08/25 面试题
广告学专业推荐信范文
2013/11/23 职场文书
党员公开承诺书
2014/03/25 职场文书
省级优秀毕业生主要事迹
2014/05/29 职场文书
博士生求职信
2014/07/06 职场文书
幼儿园百日安全活动总结
2015/05/07 职场文书
招商银行工作证明
2015/06/17 职场文书
SQL Server表分区删除详情
2021/10/16 SQL Server