详解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 当前全局变量和入口参数的所有属性
Jul 01 Python
python格式化字符串实例总结
Sep 28 Python
python实现文本文件合并
Dec 29 Python
Python实现mysql数据库更新表数据接口的功能
Nov 19 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
Mar 19 Python
Python利用heapq实现一个优先级队列的方法
Feb 03 Python
Python递归函数实例讲解
Feb 27 Python
numpy ndarray 取出满足特定条件的某些行实例
Dec 05 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
Jan 08 Python
树莓派升级python的具体步骤
Jul 05 Python
Selenium关闭INFO:CONSOLE提示的解决
Dec 07 Python
Python 实现Mac 屏幕截图详解
Oct 05 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
用PHP连接Oracle数据库
2006/10/09 PHP
php仿discuz分页效果代码
2008/10/02 PHP
PHP中PDO的错误处理
2011/09/04 PHP
PHP 多维数组的排序问题 根据二维数组中某个项排序
2011/11/09 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
2013/06/05 PHP
浅析PHP中的字符串编码转换(自动识别原编码)
2013/07/02 PHP
PHP预定义变量9大超全局数组用法详解
2016/04/23 PHP
PHP实现冒泡排序的简单实例
2016/05/26 PHP
PHP针对字符串开头和结尾的判断方法
2016/07/11 PHP
给Javascript数组插入一条记录的代码
2007/08/30 Javascript
jquery 将disabled的元素置为enabled的三种方法
2009/07/25 Javascript
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
2010/06/25 Javascript
js 事件处理函数间的Event物件是否全等
2011/04/08 Javascript
js 操作select和option常用代码整理
2012/12/13 Javascript
jQuery基本过滤选择器使用介绍
2013/04/18 Javascript
js识别不同浏览器基于userAgent做判断
2014/07/29 Javascript
javascript实现时间格式输出FormatDate函数
2015/01/13 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
jquery编写日期选择器
2017/03/16 Javascript
jQuery设置图片等比例缩小的方法
2017/04/29 jQuery
将 vue 生成的 js 上传到七牛的实例
2017/07/28 Javascript
用React实现一个完整的TodoList的示例代码
2017/10/30 Javascript
vue前端框架—Mint UI详解(更适用于移动端)
2019/04/30 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
2019/09/28 Javascript
面向新手解析python Beautiful Soup基本用法
2020/07/11 Python
python定义类的简单用法
2020/07/24 Python
详解python 支持向量机(SVM)算法
2020/09/18 Python
详解Python yaml模块
2020/09/23 Python
python爬虫如何解决图片验证码
2021/02/14 Python
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
VSCode 自定义html5模板的实现
2019/12/05 HTML / CSS
戴森英国官网:Dyson英国
2019/05/07 全球购物
eBay荷兰购物网站:eBay.nl
2020/06/26 全球购物
客服专员岗位职责
2014/02/28 职场文书
动画设计系毕业生求职信
2014/07/15 职场文书
Appium中scroll和drag_and_drop根据元素位置滑动
2022/02/15 Python