Pandas之DataFrame对象的列和索引之间的转化


Posted in Python onJune 25, 2019

约定:

import pandas as pd

DataFrame对象的列和索引之间的转化

我们常常需要将DataFrame对象中的某列或某几列作为索引,或者将索引转化为对象的列。pandas提供了set_index()/reset_index() 来供我们使用。

一、列转化为索引

df1=pd.DataFrame({'X':range(5),'Y':range(5),'S':list("aaabb"),'Z':[1,1,2,2,2]})
df1

代码结果:

S X Y Z
0 a 0 0 1
1 a 1 1 1
2 a 2 2 2
3 b 3 3 2
4 b 4 4 2

指定列为索引

df1.set_index('S')

代码结果:

X Y Z
S
a 0 0 1
a 1 1 1
a 2 2 2
b 3 3 2
b 4 4 2

指定多个列作为多级索引

df1.set_index(['S','Z'])

代码结果:

X Y
S Z
a 1 0 0
1 1 1
2 2 2
b 2 3 3
2 4 4

同时保留作为索引的列

df1.set_index(['S','Z'],drop=False)

代码结果:

S X Y Z
S Z
a 1 a 0 0 1
1 a 1 1 1
2 a 2 2 2
b 2 b 3 3 2
2 b 4 4 2

二、索引转化为列

df2=df1.set_index(['S','Z'])
df2

代码结果:

X Y
S Z
a 1 0 0
1 1 1
2 2 2
b 2 3 3
2 4 4

将单个索引作为DataFrame对象的列

df2.reset_index('Z')

代码结果:

Z X Y
S
a 1 0 0
a 1 1 1
a 2 2 2
b 2 3 3
b 2 4 4

将多级索引作为列

df2.reset_index()

代码结果:

S Z X Y
0 a 1 0 0
1 a 1 1 1
2 a 2 2 2
3 b 2 3 3
4 b 2 4 4

直接删除对指定索引

df2.reset_index('Z',drop=True)

代码结果:

X Y
S
a 0 0
a 1 1
a 2 2
b 3 3
b 4 4

直接对原DataFrame对象修改

df2.reset_index(inplace=True)
df2

代码结果:

S Z X Y
0 a 1 0 0
1 a 1 1 1
2 a 2 2 2
3 b 2 3 3
4 b 2 4 4

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
改进Django中的表单的简单方法
Jul 17 Python
教你用Python创建微信聊天机器人
Mar 31 Python
python线程池threadpool实现篇
Apr 27 Python
python 剪切移动文件的实现代码
Aug 02 Python
Python3实现的回文数判断及罗马数字转整数算法示例
Mar 27 Python
python3字符串操作总结
Jul 24 Python
TensorFlow梯度求解tf.gradients实例
Feb 04 Python
Django 允许局域网中的机器访问你的主机操作
May 13 Python
jupyter notebook 写代码自动补全的实现
Nov 02 Python
paramiko使用tail实时获取服务器的日志输出详解
Dec 06 Python
Python 把两层列表展开平铺成一层(5种实现方式)
Apr 07 Python
Python 循环读取数据内存不足的解决方案
May 25 Python
Pandas之Fillna填充缺失数据的方法
Jun 25 #Python
PYQT5实现控制台显示功能的方法
Jun 25 #Python
Pandas之Dropna滤除缺失数据的实现方法
Jun 25 #Python
PyQT5 QTableView显示绑定数据的实例详解
Jun 25 #Python
Pandas之ReIndex重新索引的实现
Jun 25 #Python
Python中使用__new__实现单例模式并解析
Jun 25 #Python
pyQt5实时刷新界面的示例
Jun 25 #Python
You might like
PHP操作数组相关函数
2011/02/03 PHP
php中使用接口实现工厂设计模式的代码
2012/06/17 PHP
PHP daddslashes 使用方法介绍
2012/10/26 PHP
深入解析fsockopen与pfsockopen的区别
2013/07/05 PHP
php中的Base62类(适用于数值转字符串)
2013/08/12 PHP
php输出xml必须header的解决方法
2014/10/17 PHP
PHP 断点续传实例详解
2017/11/11 PHP
用javascript实现改变TEXTAREA滚动条和按钮的颜色,以及怎样让滚动条变得扁平
2007/04/20 Javascript
jQuery实现高亮显示的方法
2015/03/10 Javascript
充分发挥Node.js程序性能的一些方法介绍
2015/06/23 Javascript
Jquery ajax基础教程
2015/11/20 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
validform表单验证的实现方法
2019/03/08 Javascript
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
2020/11/06 Javascript
[53:21]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-CDEC
2014/05/22 DOTA
python入门之语句(if语句、while语句、for语句)
2015/01/19 Python
python监控文件或目录变化
2016/06/07 Python
利用numpy+matplotlib绘图的基本操作教程
2017/05/03 Python
Python中super函数的用法
2017/11/17 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
2018/04/09 Python
python 将md5转为16字节的方法
2018/05/29 Python
浅析Python __name__ 是什么
2020/07/07 Python
详解Python3 定义一个跨越多行的字符串的多种方法
2020/09/06 Python
澳大利亚自然和有机的健康美容产品一站式商店:Ziani Beauty
2017/12/28 全球购物
公交公司毕业生求职信
2014/02/15 职场文书
领导调研接待方案
2014/02/27 职场文书
2015年党员自评材料
2014/12/17 职场文书
婚礼领导致辞大全
2015/07/28 职场文书
个人工作决心书
2015/09/22 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript
基于PyTorch实现一个简单的CNN图像分类器
2021/05/29 Python
MySQL的InnoDB存储引擎的数据页结构详解
2022/03/03 MySQL
Python进程池与进程锁之语法学习
2022/04/11 Python
二维码条形码生成的JavaScript脚本库
2022/07/07 Javascript