在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 相关文章推荐
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
Jan 23 Python
用于统计项目中代码总行数的Python脚本分享
Apr 21 Python
python从入门到精通(DAY 1)
Dec 20 Python
在Python中移动目录结构的方法
Jan 31 Python
Python DataFrame设置/更改列表字段/元素类型的方法
Jun 09 Python
Python+Pandas 获取数据库并加入DataFrame的实例
Jul 25 Python
Python连接Redis的基本配置方法
Sep 13 Python
python中单例常用的几种实现方法总结
Oct 13 Python
pyqt5 实现在别的窗口弹出进度条
Jun 18 Python
简单了解python 邮件模块的使用方法
Jul 24 Python
Python面向对象魔法方法和单例模块代码实例
Mar 25 Python
Python API 操作Hadoop hdfs详解
Jun 06 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实现Mysql简易操作类
2015/10/11 PHP
php实现单笔转账到支付宝功能
2018/10/09 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
浅析JavaScript中的类型和对象
2013/11/29 Javascript
javascript在网页中实现读取剪贴板粘贴截图功能
2014/06/07 Javascript
JS实现简单的顶部定时关闭层效果
2014/06/15 Javascript
javascript数组克隆简单实现方法
2015/12/16 Javascript
避免jQuery名字冲突 noConflict()方法
2016/07/30 Javascript
windows下vue-cli及webpack搭建安装环境
2017/04/25 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
基于DOM节点删除之empty和remove的区别(详解)
2017/09/11 Javascript
微信小程序图片轮播组件gallery slider使用方法详解
2018/01/31 Javascript
详解在vue-test-utils中mock全局对象
2018/11/07 Javascript
vue-music 使用better-scroll遇到轮播图不能自动轮播问题
2018/12/03 Javascript
说说如何在Vue.js中实现数字输入组件的方法
2019/01/08 Javascript
更强大的vue ssr实现预取数据的方式
2019/07/19 Javascript
详解Python使用simplejson模块解析JSON的方法
2016/03/24 Python
Python数据结构之图的应用示例
2018/05/11 Python
pandas.DataFrame.to_json按行转json的方法
2018/06/05 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
对python遍历文件夹中的所有jpg文件的实例详解
2018/12/08 Python
浅谈python 导入模块和解决文件句柄找不到问题
2018/12/15 Python
Python中使用logging和traceback模块记录日志和跟踪异常
2019/04/09 Python
django和vue实现数据交互的方法
2019/08/21 Python
python3.4中清屏的处理方法
2020/07/06 Python
flask项目集成swagger的方法
2020/12/09 Python
玖熙女鞋美国官网:Nine West
2016/10/06 全球购物
澳大利亚二手奢侈品网站:Modsie
2019/09/23 全球购物
Java中实现多态的机制
2015/08/09 面试题
房地产开发计划书
2014/01/10 职场文书
《狼》教学反思
2014/03/02 职场文书
优秀学生党员先进事迹材料
2014/05/29 职场文书
质量管理标语
2014/06/12 职场文书
田径运动会通讯稿
2014/09/13 职场文书
Valheim服务器 Mod修改安装教程 【ValheimPlus】
2022/12/24 Servers
Python使用pandas导入csv文件内容的示例代码
2022/12/24 Python