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 相关文章推荐
pycharm 使用心得(三)Hello world!
Jun 05 Python
在Python上基于Markov链生成伪随机文本的教程
Apr 17 Python
Python将阿拉伯数字转换为罗马数字的方法
Jul 10 Python
Python使用设计模式中的责任链模式与迭代器模式的示例
Mar 02 Python
实例讲解Python中函数的调用与定义
Mar 14 Python
Java与Python两大幸存者谁更胜一筹呢
Apr 12 Python
python 将list转成字符串,中间用符号分隔的方法
Oct 23 Python
利用Python正则表达式过滤敏感词的方法
Jan 21 Python
Python多线程处理实例详解【单进程/多进程】
Jan 30 Python
Python基于scipy实现信号滤波功能
May 08 Python
Python通用函数实现数组计算的方法
Jun 13 Python
安装好Pycharm后如何配置Python解释器简易教程
Jun 28 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本地服务器分享
2013/02/19 PHP
PHP实现的封装验证码类详解
2013/06/18 PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
2013/06/27 PHP
php生成不重复随机数、数组的4种方法分享
2015/03/30 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
PHP执行linux命令6个函数代码实例
2020/11/24 PHP
新页面打开实际尺寸的图片
2006/08/25 Javascript
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
javascript实现的网页局布刷新效果
2008/12/01 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
2012/12/11 Javascript
Jquery事件的连接使用示例
2013/06/18 Javascript
javascript不同类型数据之间的运算的转换方法
2014/02/13 Javascript
js 3秒后跳转页面的实现代码
2014/03/10 Javascript
JavaScript的类型、值和变量小结
2015/07/09 Javascript
jQuery实现Tab选项卡切换效果简单演示
2015/11/23 Javascript
简单谈谈JavaScript的同步与异步
2015/12/31 Javascript
Three.js基础学习之场景对象
2017/09/27 Javascript
浅谈Angular路由复用策略
2017/10/04 Javascript
JavaScript中EventLoop介绍
2018/01/22 Javascript
vue实现动态列表点击各行换色的方法
2018/09/13 Javascript
Python使用tablib生成excel文件的简单实现方法
2016/03/16 Python
关于Python中Inf与Nan的判断问题详解
2017/02/08 Python
python基础之入门必看操作
2017/07/26 Python
实例讲解Python中整数的最大值输出
2019/03/17 Python
python数据处理之如何选取csv文件中某几行的数据
2019/09/02 Python
详解pandas.DataFrame.plot() 画图函数
2020/06/14 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
2020/08/03 Python
python 进程池pool使用详解
2020/10/15 Python
华为C++笔试题
2014/08/05 面试题
人力资源专业推荐信
2013/11/29 职场文书
技术学校毕业生求职信分享
2013/12/02 职场文书
学术会议欢迎词
2014/01/09 职场文书
护士自我鉴定怎么写
2014/02/07 职场文书
销售团队获奖感言
2014/08/14 职场文书
公务员年终个人总结
2015/02/12 职场文书
Vue.js中v-for指令的用法介绍
2022/03/13 Vue.js