对pandas的行列名更改与数据选择详解


Posted in Python onNovember 12, 2018

记录一些pandas选择数据的内容,此前首先说行列名的获取和更改,以方便获取数据。此文作为学习巩固。

这篇博的内容顺序大概就是: 行列名的获取 —> 行列名的更改 —> 数据选择

一、pandas的行列名获取和更改

1. 获取: df.index() df.columns()

首先,举个例子,做一个DataFrame如下:

>>>import pandas as pd
>>>import numpy as np
>>>data = pd.DataFrame({'a':[1,2,3],'b':[4,5,6],'c':[7,8,9]})
>>>data

对pandas的行列名更改与数据选择详解

设置了列索引为 abc,行索引是自动生成的,也可以设置

>>>data.index = ['A','B','C']
>>>data

对pandas的行列名更改与数据选择详解

以下的做法都以这个 data 作为数据举例

接下来就可以获取索引了,index-行索引,columns-列索引

>>>data.index

对pandas的行列名更改与数据选择详解

>>>data.columns

对pandas的行列名更改与数据选择详解

2. 修改,看到有很多方法,这里推荐一种比较灵活好用的方法

df.rename(index={ }, columns={ }, inplace=True)
>>>data.rename(index={'A':'D', 'B':'E', 'C':'F'}, columns={'a':'d', 'b':'e', 'c':'f'}, inplace = True)
>>>data

对pandas的行列名更改与数据选择详解

说明3点:

1. index和columns无关,可以分别指定,也就是说,可以只修改行索引,那么rename()中只写index

2. 索引可以任意挑选,如此处,index={'A':'D', 'C':'F'} 则只改A和C,columns同样

3. inplace=True, 在原dataframe上改动

二、pandas的数据选择

1. 直接用索引选(不灵活、不推荐) df[ ]

1) 选择‘a'列

>>>data['a']

对pandas的行列名更改与数据选择详解

注意:

1. 这样取出的数据类型为 Series

2. 这种方法只能取出一列,不能用数字下标,不能多选或片选, data['a','b'] , data['a':'c'] , data[0]

2)选择'A','B'行

>>>data['A':'B'] 
>>>data[0:2] # 两种方法同一结果

对pandas的行列名更改与数据选择详解

注意:

1. 这样取出的数据类型为 DateFrame

2. 这种方法只能用于片选行,可以用数字下标,不能单独取,即 data['A'] , data['A','B'] , data[1]

2.使用 .loc(推荐) df.loc(),()内参数先行后列,区别行列的取法

1) 取列:

>>>data.loc[:,['a','c']] #图1 需要行全取,再对应指定列

2)取行:

>>>data.loc[['A','B']] #图2 直接指定行

3)取行列交叉值:

>>>data.loc[['A'],['b','c']] #图3

对pandas的行列名更改与数据选择详解

注意:

1. 区别 df.iloc()

.loc() —— 使用标签 label 作为索引取值

.iloc() —— 使用整数下标 index 作为索引取值,如上面三句可以换成以下三句,输出数据类型有不同

>>>data.iloc[:,[0,2]] # DataFrame
>>>data.iloc[[0,1]] # DataFrame
>>>data.iloc[0,[1,2]] # Series

2. 对于 数字类型的变量,可以使用bool 选取行,列不能用bool,如

>>>data.loc[data.b>5] # DataFrame

对pandas的行列名更改与数据选择详解

>>>data.loc[data.b>5,['c']] #DataFrame 输出为9位置的frame
>>>data.iloc[data.b.values>5,[2]] #DataFrame 输出同上,需要有 .values取值

3. .ix[ ] 可以混用label和index,位置使用同 .loc[ ] .iloc[ ]

以上这篇对pandas的行列名更改与数据选择详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python判断IP地址合法性的方法实例
Mar 13 Python
Python图像灰度变换及图像数组操作
Jan 27 Python
Python实现的FTP通信客户端与服务器端功能示例
Mar 28 Python
python中利用zfill方法自动给数字前面补0
Apr 10 Python
python 画三维图像 曲面图和散点图的示例
Dec 29 Python
Django之模板层的实现代码
Sep 09 Python
Python利用matplotlib绘制约数个数统计图示例
Nov 26 Python
基于pandas中expand的作用详解
Dec 17 Python
jupyternotebook 撤销删除的操作方式
Apr 17 Python
如何使用Python进行PDF图片识别OCR
Jan 22 Python
python爬取youtube视频的示例代码
Mar 03 Python
浅析Python中的随机采样和概率分布
Dec 06 Python
Python numpy.array()生成相同元素数组的示例
Nov 12 #Python
浅谈numpy生成数组的零值问题
Nov 12 #Python
python生成多个只含0,1元素的随机数组或列表的实例
Nov 12 #Python
python 构造三维全零数组的方法
Nov 12 #Python
对pandas中两种数据类型Series和DataFrame的区别详解
Nov 12 #Python
在python中pandas的series合并方法
Nov 12 #Python
浅谈python的dataframe与series的创建方法
Nov 12 #Python
You might like
递归列出所有文件和目录
2006/10/09 PHP
php生成随机密码自定义函数代码(简单快速)
2014/05/10 PHP
PHP的文件操作与算法实现的面试题示例
2015/08/10 PHP
use jscript with List Proxy Server Information
2007/06/11 Javascript
js 数据类型转换总结笔记
2011/01/17 Javascript
5个javascript的数字格式化函数分享
2011/12/07 Javascript
JS+CSS实现自动切换的网页滑动门菜单效果代码
2015/09/14 Javascript
jQuery实现简易的天天爱消除小游戏
2015/10/16 Javascript
JQuery中attr属性和jQuery.data()学习笔记【必看】
2016/05/18 Javascript
文件上传,iframe跨域数据提交的实现
2016/11/18 Javascript
vue日期组件 支持vue1.0和2.0
2017/01/09 Javascript
H5上传本地图片并预览功能
2017/05/08 Javascript
node.js + socket.io 实现点对点随机匹配聊天
2017/06/30 Javascript
vue 中固定导航栏的实例代码
2019/11/01 Javascript
JS数组方法push()、pop()用法实例分析
2020/01/18 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
[01:07:19]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第一场
2018/04/06 DOTA
王纯业的Python学习笔记 下载
2007/02/10 Python
python中学习K-Means和图片压缩
2017/11/20 Python
基于Python中单例模式的几种实现方式及优化详解
2018/01/09 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
2018/02/21 Python
Python去除、替换字符串空格的处理方法
2018/04/01 Python
浅谈django三种缓存模式的使用及注意点
2018/09/30 Python
PYQT5实现控制台显示功能的方法
2019/06/25 Python
深入了解python中元类的相关知识
2019/08/29 Python
解析Python3中的Import
2019/10/13 Python
Python如何实现FTP功能
2020/05/28 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
2020/06/22 Python
HTML5实现移动端点击翻牌功能
2020/10/23 HTML / CSS
C#中类(class)与结构(struct)的异同
2013/11/03 面试题
养殖行业的创业计划书
2014/01/05 职场文书
三八妇女节活动总结
2014/05/04 职场文书
支行行长竞聘演讲稿
2014/05/15 职场文书
团队精神口号
2014/06/06 职场文书
Python字符串对齐方法使用(ljust()、rjust()和center())
2021/04/26 Python
css让页脚保持在底部位置的四种方案
2022/07/23 HTML / CSS