详解Pandas之容易让人混淆的行选择和列选择


Posted in Python onJuly 10, 2019

在刚学Pandas时,行选择和列选择非常容易混淆,在这里进行一下讨论和归纳

本文的数据来源:https://github.com/fivethirtyeight/data/tree/master/fandango

import pandas as pd

fandango = pd.read_csv('fandango_score_comparison.csv')

原始的数据如下(截取了一部分)

详解Pandas之容易让人混淆的行选择和列选择

 行选择

Pandas进行行选择一般有三种方法:

  • 连续多行的选择用类似于python的列表切片
  • 按照指定的索引选择一行或多行,使用loc[]方法
  • 按照指定的位置选择一行多多行,使用iloc[]方法

第一种,使用类似于python的列表切片

n = fandango[1:3]

详解Pandas之容易让人混淆的行选择和列选择

从结果可以看到,和python的列表切片一样,索引号从0开始,选择了索引号1和2的数据(不包括3)

 第二种,按照指定的索引选择一行或多行,使用loc[]方法

o = fandango.loc[1]

p = fandango.loc[1:3]

详解Pandas之容易让人混淆的行选择和列选择

可以看到,o是一个Series,选择了索引号为1的那一行数据,注意p,它与第一种的列表索引最大的不同是包含了索引号为3的那一行数据

u = fandango.loc[[1,3]]

详解Pandas之容易让人混淆的行选择和列选择

这里按照索引号选择不连续的行

第三种,按照指定的位置选择一行多多行,使用iloc[]方法

在上面的数据中,使用iloc[]和loc[]的效果是一样的,因为索引号都是从0开始并且连续不断,现在我要删除索引号为1和2的这两行

fandango_drop = fandango.drop([1,2], axis=0)

详解Pandas之容易让人混淆的行选择和列选择

可以看到的确删除了两行数据

此时我仍然用loc[]来索引行号为2的那一行,就会出错

s = fandango_drop.loc[2]

详解Pandas之容易让人混淆的行选择和列选择

但是,我使用iloc[]来进行一次

t = fandango_drop.iloc[2]

详解Pandas之容易让人混淆的行选择和列选择

看到了吧,iloc[2]的意思是选择第三行的数据,也就是索引号为4的那一行数据,因为iloc[]的计算也是从0开始的,所以iloc[]适用于数据进行了筛选后造成索引号与原来不一致的情况

loc[]与iloc[]方法之间还有一个巨大的差别,那就是loc[]里的参数是对应的索引值即可,所以参数可以是整数,也可以是字符串。而iloc[]里的参数表示的是第几行的数据,所以只能是整数

 列选择

列选择比较简单,只要直接把列名传递过去即可,如果有多列的数据,要单独指出列名或列的索引号

第一种,选择单列,选择了电影名称那一列

q = fandango['FILM']

详解Pandas之容易让人混淆的行选择和列选择

第二种,通过指定列名选择多列

r = fandango[['FILM','Metacritic']]

详解Pandas之容易让人混淆的行选择和列选择

第三种,非常容易让人混淆的,通过列的索引号选择多列

v = fandango[[0,1,2]]

详解Pandas之容易让人混淆的行选择和列选择

其实,列也是有一个索引号的,看到这里不禁想问,那我要选择前5列呢?我不想写一个长列表,又不想逐个写出这5列的名称,能否用切片呢?

x = fandango[[0:5]]

详解Pandas之容易让人混淆的行选择和列选择

事实证明,这是不行的,更好的方法是在参数中构建一个列表

w = fandango[list(range(5))]

更多的参考资料:http://pandas.pydata.org/pandas-docs/version/0.17.0/api.html

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

Python 相关文章推荐
Python bsddb模块操作Berkeley DB数据库介绍
Apr 08 Python
Python删除Java源文件中全部注释的实现方法
Aug 30 Python
python+matplotlib绘制3D条形图实例代码
Jan 17 Python
Tensorflow使用支持向量机拟合线性回归
Sep 07 Python
django 实现编写控制登录和访问权限控制的中间件方法
Jan 15 Python
在Pycharm中执行scrapy命令的方法
Jan 16 Python
详解Python 调用C# dll库最简方法
Jun 20 Python
Python 转换文本编码实现解析
Aug 27 Python
Python 实现大整数乘法算法的示例代码
Sep 17 Python
python多线程高级锁condition简单用法示例
Nov 07 Python
Django如何实现防止XSS攻击
Oct 13 Python
python 自动刷新网页的两种方法
Apr 20 Python
python的几种矩阵相乘的公式详解
Jul 10 #Python
Python内存管理实例分析
Jul 10 #Python
OpenCV 边缘检测
Jul 10 #Python
python使用Qt界面以及逻辑实现方法
Jul 10 #Python
用Python实现BP神经网络(附代码)
Jul 10 #Python
OpenCV 模板匹配
Jul 10 #Python
8种用Python实现线性回归的方法对比详解
Jul 10 #Python
You might like
php7安装yar扩展的方法详解
2017/08/03 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
2019/05/27 PHP
判断脚本加载是否完成的方法
2009/05/26 Javascript
JavaScript Event学习第十一章 按键的检测
2010/02/10 Javascript
使用Java实现简单的server/client回显功能的方法介绍
2013/05/03 Javascript
JS分页控件 可用于无刷新分页
2013/07/23 Javascript
jQuery Animation实现CSS3动画示例介绍
2013/08/14 Javascript
Perl Substr()函数及函数的应用
2015/12/16 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
jquery实现图片列表鼠标移入微动
2016/12/01 Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
2017/03/01 Javascript
js canvas实现适用于移动端的百分比仪表盘dashboard
2017/07/18 Javascript
Angular 4.0学习教程之架构详解
2017/09/12 Javascript
angular实现页面打印局部功能的思考与方法
2018/04/13 Javascript
JS实现的缓冲运动效果示例
2018/04/30 Javascript
js实现简单选项卡功能
2020/03/23 Javascript
node使用Mongoose类库实现简单的增删改查
2018/11/08 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
Python中unittest用法实例
2014/09/25 Python
python中MySQLdb模块用法实例
2014/11/10 Python
使用Python制作获取网站目录的图形化程序
2015/05/04 Python
使用python画个小猪佩奇的示例代码
2018/06/06 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
Python装饰器用法与知识点小结
2020/03/09 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
2020/07/02 Python
如何解决pycharm调试报错的问题
2020/08/06 Python
如何基于pandas读取csv后合并两个股票
2020/09/25 Python
基于CSS3特效之动画:animation的应用
2013/05/09 HTML / CSS
css3 transform及原生js实现鼠标拖动3D立方体旋转
2016/06/20 HTML / CSS
新教师工作感言
2014/02/16 职场文书
2014年民政局关于保密工作整改措施
2014/09/19 职场文书
会计岗位职责范本
2015/04/02 职场文书
单位收入证明范本
2015/06/18 职场文书
初中英语教学随笔
2015/08/15 职场文书
中秋节随笔
2015/08/15 职场文书
爱岗敬业事迹材料
2019/06/20 职场文书