在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用reduce和map把字符串转为数字的方法
Dec 19 Python
python函数的5种参数详解
Feb 24 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
Feb 23 Python
关于django 数据库迁移(migrate)应该知道的一些事
May 27 Python
详解python读取和输出到txt
Mar 29 Python
Python3 Tkinter选择路径功能的实现方法
Jun 14 Python
python打开windows应用程序的实例
Jun 28 Python
python 使用plt画图,去除图片四周的白边方法
Jul 09 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
Feb 07 Python
python 实现图片批量压缩的示例
Dec 18 Python
Python jieba库分词模式实例用法
Jan 13 Python
对PyTorch中inplace字段的全面理解
May 22 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的开发框架的现状和展望
2007/03/16 PHP
CodeIgniter整合Smarty的方法详解
2017/08/25 PHP
Laravel如何自定义command命令浅析
2019/03/23 PHP
基于ThinkPHP删除目录及目录文件函数
2020/10/28 PHP
JQUERY 对象与DOM对象之两者相互间的转换
2009/04/27 Javascript
js+css实现select的美化效果
2016/03/24 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
2016/11/30 Javascript
Require.JS中的几种define定义方式示例
2017/06/01 Javascript
基于代数方程库Algebra.js解二元一次方程功能示例
2017/06/09 Javascript
详解JS中统计函数执行次数与执行时间
2018/09/04 Javascript
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
2019/06/24 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
JS实现多选框的操作
2020/06/24 Javascript
Vue+Element自定义纵向表格表头教程
2020/10/26 Javascript
[01:34]DAC2018主赛事第四日五佳镜头 Gh巨牙海民助Miracle-死里逃生
2018/04/07 DOTA
web.py在模板中输出美元符号的方法
2014/08/26 Python
python日期时间转为字符串或者格式化输出的实例
2018/05/29 Python
Python利用itchat库向好友或者公众号发消息的实例
2019/02/21 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
在VS2017中用C#调用python脚本的实现
2019/07/31 Python
基于python实现把图片转换成素描
2019/11/13 Python
Python高级编程之继承问题详解(super与mro)
2019/11/19 Python
突袭HTML5之Javascript API扩展2—地理信息服务及地理位置API学习
2013/01/31 HTML / CSS
李宁官方网店:中国运动品牌
2017/11/02 全球购物
有趣的流行文化T恤、马克杯、手机壳和更多:Look Human
2019/01/07 全球购物
一名毕业生的自我鉴定
2013/12/04 职场文书
会计专业大学生求职信范文
2014/01/28 职场文书
家长给小学生的评语
2014/01/30 职场文书
优秀护士先进事迹
2014/05/08 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
三八妇女节超市活动方案
2014/08/18 职场文书
热爱劳动主题班会
2015/08/14 职场文书
2016企业先进集体事迹材料
2016/02/25 职场文书
PHP中->和=>的意思
2021/03/31 PHP
MySQL中使用or、in与union all在查询命令下的效率对比
2021/05/26 MySQL
MySQL如何解决幻读问题
2021/08/07 MySQL