在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使用sftp实现上传和下载功能(实例代码)
Mar 14 Python
pycharm安装和首次使用教程
Aug 27 Python
对python判断ip是否可达的实例详解
Jan 31 Python
Django保护敏感信息的方法示例
May 09 Python
ipython和python区别详解
Jun 26 Python
一行python实现树形结构的方法
Aug 09 Python
Django接收自定义http header过程详解
Aug 23 Python
在Python中利用pickle保存变量的实例
Dec 30 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
Feb 27 Python
执行Python程序时模块报错问题
Mar 26 Python
python简单实现最大似然估计&scipy库的使用详解
Apr 15 Python
Pandas中两个dataframe的交集和差集的示例代码
Dec 13 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脚本的10个技巧(4)
2006/10/09 PHP
php 获得汉字拼音首字母的函数
2009/08/01 PHP
PHP 命名空间实例说明
2011/01/27 PHP
php实现的简单美国商品税计算函数
2015/07/13 PHP
php遍历解析xml字符串的方法
2016/05/05 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
JS 实现完美include载入实现代码
2010/08/05 Javascript
javascript开发中因空格引发的错误
2010/11/08 Javascript
漂亮的jquery提示效果(仿腾讯弹出层)
2013/02/05 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
深入理解javascript中defer的作用
2013/12/11 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
jQuery实现带动画效果的多级下拉菜单代码
2015/09/08 Javascript
JQuery实现DIV其他动画效果的简单实例
2016/09/18 Javascript
关于Javascript中document.cookie的使用
2017/03/08 Javascript
前端html中jQuery实现对文本的搜索功能并把搜索相关内容显示出来
2017/11/14 jQuery
微信小程序实现animation动画
2018/01/26 Javascript
解决layui表格的表头不滚动的问题
2019/09/04 Javascript
javascript简单实现深浅拷贝过程详解
2019/10/08 Javascript
vue addRoutes路由动态加载操作
2020/08/04 Javascript
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
Python中dictionary items()系列函数的用法实例
2014/08/21 Python
python编写简单爬虫资料汇总
2016/03/22 Python
关于Python面向对象编程的知识点总结
2017/02/14 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
python多任务及返回值的处理方法
2019/01/22 Python
python实现五子棋小游戏
2020/03/25 Python
python__new__内置静态方法使用解析
2020/01/07 Python
python 实现ping测试延迟的两种方法
2020/12/10 Python
俄罗斯香水在线商店:AromaCode
2019/12/04 全球购物
宣传普通话标语
2014/06/27 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
2014小学生国庆65周年演讲稿
2014/09/21 职场文书
教师政风行风自查自纠报告
2014/10/21 职场文书
《打电话》教学反思
2016/02/22 职场文书
vue3使用vuedraggable实现拖拽功能
2022/04/06 Vue.js