对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解析发往本机的数据包示例 (解析数据包)
Jan 16 Python
Python中的特殊语法:filter、map、reduce、lambda介绍
Apr 14 Python
Python 的描述符 descriptor详解
Feb 27 Python
Java Web开发过程中登陆模块的验证码的实现方式总结
May 25 Python
Python通过命令开启http.server服务器的方法
Nov 04 Python
Python实现PS图像调整黑白效果示例
Jan 25 Python
Django实现文件上传和下载功能
Oct 06 Python
python的sys.path模块路径添加方式
Mar 09 Python
解决redis与Python交互取出来的是bytes类型的问题
Jul 16 Python
降低python版本的操作方法
Sep 11 Python
pycharm实现猜数游戏
Dec 07 Python
Python socket如何解析HTTP请求内容
Feb 12 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
php二维数组排序与默认自然排序的方法介绍
2013/04/27 PHP
PHP_Cooikes不同页面无法传递的解决方法
2014/03/07 PHP
将二维数组转为一维数组的2种方法
2014/05/26 PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
2014/11/19 PHP
php+ajax实时刷新简单实例
2015/02/25 PHP
图文详解PHP环境搭建教程
2016/07/16 PHP
PHP如何根据文件头检测文件类型实例代码
2018/10/14 PHP
PHP+MySql实现一个简单的留言板
2020/07/19 PHP
jquery中通过过滤器获取表单元素的实现代码
2011/07/05 Javascript
JavaScript闭包 懂不懂由你反正我是懂了
2011/10/21 Javascript
javascript自启动函数的问题探讨
2013/10/05 Javascript
解析URI与URL之间的区别与联系
2013/11/22 Javascript
12306验证码破解思路分享
2015/03/25 Javascript
12个超实用的JQuery代码片段
2015/11/02 Javascript
微信小程序 Toast自定义实例详解
2017/01/20 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
Angular 4依赖注入学习教程之Injectable装饰器(六)
2017/06/04 Javascript
JavaScript中最常用的10种代码简写技巧总结
2017/06/28 Javascript
微信小程序BindTap快速连续点击目标页面跳转多次问题处理
2019/04/08 Javascript
使用imba.io框架得到比 vue 快50倍的性能基准
2019/06/17 Javascript
layer.msg()去掉默认时间,实现手动关闭的方法
2019/09/12 Javascript
JavaScript进制转换实现方法解析
2020/01/18 Javascript
javascript canvas时钟模拟器
2020/07/13 Javascript
Vue 根据条件判断van-tab的显示方式
2020/08/03 Javascript
[44:50]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 TNC vs VG
2018/04/02 DOTA
[03:01]完美世界DOTA2联赛PWL S2 集锦第二期
2020/12/03 DOTA
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
2018/02/03 Python
opencv python 2D直方图的示例代码
2018/07/20 Python
python+opencv实现高斯平滑滤波
2020/07/21 Python
python实现祝福弹窗效果
2019/04/07 Python
Python生成词云的实现代码
2020/01/14 Python
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
荷兰演唱会和体育比赛订票网站:viagogo荷兰
2018/04/08 全球购物
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
职位证明模板
2015/06/23 职场文书
Vue项目中如何封装axios(统一管理http请求)
2021/05/02 Vue.js