在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中assert用法实例分析
Apr 30 Python
Python functools模块学习总结
May 09 Python
python实现的希尔排序算法实例
Jul 01 Python
Django日志模块logging的配置详解
Feb 14 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
May 08 Python
Python pyinotify模块实现对文档的实时监控功能方法
Oct 13 Python
python的sorted用法详解
Jun 25 Python
Python实现多线程/多进程的TCP服务器
Sep 03 Python
使用python绘制温度变化雷达图
Oct 18 Python
python读取多层嵌套文件夹中的文件实例
Feb 27 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
Mar 30 Python
Python网页解析器使用实例详解
May 30 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
PHP4引用文件语句的对比
2006/10/09 PHP
第十五节--Zend引擎的发展
2006/11/16 PHP
详解WordPress开发中wp_title()函数的用法
2016/01/07 PHP
laravel 修改记住我功能的cookie保存时间的方法
2019/10/14 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
Thinkphp集成抖音SDK的实现方法
2020/04/28 PHP
原生JavaScript生成GUID的实现示例
2014/09/05 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
Jquery uploadify上传插件使用详解
2016/01/13 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
整理一些最近经常遇到的前端面试题
2017/04/25 Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
2017/04/25 Javascript
zTree异步加载展开第一级节点的实现方法
2017/09/05 Javascript
Vue ElementUi同时校验多个表单(巧用new promise)
2018/06/06 Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
2018/07/25 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
2018/11/20 Javascript
js时间戳转yyyy-MM-dd HH-mm-ss工具类详解
2019/04/30 Javascript
python模拟登陆阿里妈妈生成商品推广链接
2014/04/03 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
python实现微信防撤回神器
2019/04/29 Python
python搜索包的路径的实现方法
2019/07/19 Python
python语言线程标准库threading.local解读总结
2019/11/10 Python
Pytorch对Himmelblau函数的优化详解
2020/02/29 Python
python实现从ftp服务器下载文件
2020/03/03 Python
Python实现井字棋小游戏
2020/03/09 Python
QML实现钟表效果
2020/06/02 Python
澳大利亚家具和家居用品在线:BROSA
2017/11/02 全球购物
学生就业推荐信
2013/11/13 职场文书
煤矿班组长岗位职责
2013/12/29 职场文书
班主任班级寄语大全
2014/04/04 职场文书
2014年为民办实事工作总结
2014/12/20 职场文书
干货!开幕词的写作方法
2019/04/02 职场文书
普希金的诗歌赏析(3首)
2019/08/20 职场文书
零基础学java之方法的定义与调用详解
2022/04/10 Java/Android
Go语言 详解net的tcp服务
2022/04/14 Golang
Win11跳过联网界面创建本地管理账户的3种方法
2022/04/20 数码科技