在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使用wget实现下载网络文件功能示例
May 31 Python
python 中字典嵌套列表的方法
Jul 03 Python
python 监听salt job状态,并任务数据推送到redis中的方法
Jan 14 Python
python tkinter库实现气泡屏保和锁屏
Jul 29 Python
python3反转字符串的3种方法(小结)
Nov 07 Python
python dataframe NaN处理方式
Dec 26 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
Mar 09 Python
keras 解决加载lstm+crf模型出错的问题
Jun 10 Python
PyTorch实现重写/改写Dataset并载入Dataloader
Jul 14 Python
Python用K-means聚类算法进行客户分群的实现
Aug 23 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
Mar 03 Python
解决pycharm下载库时出现Failed to install package的问题
Sep 04 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数组
2006/10/09 PHP
php实现按照权重随机排序数据的方法
2015/01/09 PHP
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
PHPMAILER实现PHP发邮件功能
2018/04/18 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
使用PHP反射机制来构造"CREATE TABLE"的sql语句
2019/03/21 PHP
html 锁定页面(js遮罩层弹出div效果)
2009/10/27 Javascript
js 复制或插入Html的实现方法小结
2010/05/19 Javascript
js模仿html5 placeholder适应于不支持的浏览器
2013/01/13 Javascript
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
2015/03/04 Javascript
基于JavaScript实现弹出框效果
2016/02/19 Javascript
React实现双向绑定示例代码
2016/09/19 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
2017/05/13 jQuery
js input输入百分号保存数据库失败的解决方法
2018/05/26 Javascript
Vue多组件仓库开发与发布详解
2019/02/28 Javascript
如何利用vue实现波谱拟合详解
2020/11/05 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
[02:40]DOTA2英雄基础教程 先知
2013/11/29 DOTA
python基于BeautifulSoup实现抓取网页指定内容的方法
2015/07/09 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
Python操作MySQL模拟银行转账
2018/03/12 Python
对Python中DataFrame选择某列值为XX的行实例详解
2019/01/29 Python
python实现WebSocket服务端过程解析
2019/10/18 Python
wxPython实现绘图小例子
2019/11/19 Python
Python字符串格式化输出代码实例
2019/11/22 Python
大专生的学习自我评价
2013/12/04 职场文书
人力资源部经理助理岗位职责
2014/03/04 职场文书
供货协议书
2014/04/22 职场文书
永远跟党走演讲稿
2014/09/12 职场文书
先进党支部事迹材料2016
2016/02/26 职场文书
2019秋季运动会口号
2019/06/25 职场文书
使用python创建股票的时间序列可视化分析
2022/03/03 Python
Python绘画好看的星空图
2022/03/17 Python
MySQL创建管理LIST分区
2022/04/13 MySQL