对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装饰器在Django框架下去除冗余代码的教程
Apr 16 Python
python查找指定具有相同内容文件的方法
Jun 28 Python
python图片验证码生成代码
Jul 02 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
Mar 20 Python
Python第三方库h5py_读取mat文件并显示值的方法
Feb 08 Python
python获取地震信息 微信实时推送
Jun 18 Python
python脚本开机自启的实现方法
Jun 28 Python
ubuntu上安装python的实例方法
Sep 30 Python
如何基于python生成list的所有的子集
Nov 11 Python
pycharm永久激活超详细教程
Oct 29 Python
GitHub上值得推荐的8个python 项目
Oct 30 Python
Python中可变和不可变对象的深入讲解
Aug 02 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代码
2006/12/06 PHP
php对二维数组按指定键值key排序示例代码
2013/11/26 PHP
php删除指定目录的方法
2015/04/03 PHP
PHP获取文件扩展名的4种方法
2015/11/24 PHP
PHP微信红包API接口
2015/12/05 PHP
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
JavaScript基础语法让人疑惑的地方小结
2012/05/23 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
按Enter键触发事件的jquery方法实现代码
2014/02/17 Javascript
jquery实现动态改变div宽度和高度
2015/05/08 Javascript
nodejs初步体验篇
2015/11/23 NodeJs
基于JavaScript Array数组方法(新手必看篇)
2016/08/20 Javascript
浅析ES6的八进制与二进制整数字面量
2016/08/30 Javascript
Node.js连接MongoDB数据库产生的问题
2017/02/08 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍
2018/03/01 Javascript
浅谈webpack-dev-server的配置和使用
2018/05/17 Javascript
vue利用v-for嵌套输出多层对象,分别输出到个表的方法
2018/09/07 Javascript
微信小程序云开发之数据库操作
2019/05/18 Javascript
taro开发微信小程序的实践
2019/05/21 Javascript
微信小程序如何获取用户头像和昵称
2019/09/23 Javascript
如何实现js拖拽效果及原理解析
2020/05/08 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
2021/01/12 Vue.js
node中短信api实现验证码登录的示例代码
2021/01/20 Javascript
python实现将一维列表转换为多维列表(numpy+reshape)
2019/11/29 Python
浅谈Pycharm最有必要改的几个默认设置项
2020/02/14 Python
基于python3实现倒叙字符串
2020/02/18 Python
python3用urllib抓取贴吧邮箱和QQ实例
2020/03/10 Python
使用matplotlib动态刷新指定曲线实例
2020/04/23 Python
python获取整个网页源码的方法
2020/08/03 Python
HTML5中使用postMessage实现Ajax跨域请求的方法
2016/04/19 HTML / CSS
法制宣传日活动总结
2014/04/29 职场文书
小学捐书活动总结
2014/07/05 职场文书
公安机关纪律作风整顿剖析
2014/10/10 职场文书
党的群众路线批评与自我批评范文
2014/10/16 职场文书
2016年“9.22”世界无车日活动小结
2016/04/05 职场文书