详解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中变量交换的例子
Aug 25 Python
在Python中使用PIL模块对图片进行高斯模糊处理的教程
May 05 Python
Python爬取数据并写入MySQL数据库的实例
Jun 21 Python
django rest framework 数据的查找、过滤、排序的示例
Jun 25 Python
Python同步遍历多个列表的示例
Feb 19 Python
PyTorch搭建多项式回归模型(三)
May 22 Python
pyqt5使用按钮进行界面的跳转方法
Jun 19 Python
Python合并2个字典成1个新字典的方法(9种)
Dec 19 Python
python import 上级目录的导入
Nov 03 Python
详解Java中一维、二维数组在内存中的结构
Feb 11 Python
超详细Python解释器新手安装教程
May 10 Python
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 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文件中bom的PHP代码
2012/03/13 PHP
如何使用php判断所处服务器操作系统的类型
2013/06/20 PHP
WordPress中邮件的一些修改和自定义技巧
2015/12/15 PHP
php判断用户是否关注微信公众号
2016/07/22 PHP
php foreach如何跳出两层循环(详解)
2016/11/05 PHP
php变量与JS变量实现不通过跳转直接交互的方法
2017/08/25 PHP
php实现数组重复数字统计实例
2018/09/30 PHP
JavaScript随机排序(随即出牌)
2010/09/17 Javascript
js 判断checkbox是否选中的实现代码
2010/11/23 Javascript
解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法
2012/11/14 Javascript
JavaScript定时器详解及实例
2013/08/01 Javascript
jQuery 属性选择器element[herf*='value']使用示例
2013/10/20 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
2014/03/27 Javascript
angularjs指令中的compile与link函数详解
2014/12/06 Javascript
JS验证邮件地址格式方法小结
2015/12/01 Javascript
基于javascript实现checkbox复选框实例代码
2016/01/28 Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
2016/10/31 Javascript
JS判断键盘是否按的回车键并触发指定按钮点击操作的方法
2017/02/13 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
vue双向数据绑定知识点总结
2018/04/18 Javascript
vue多个元素的样式选择器问题
2019/11/29 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
2020/04/08 Javascript
python paramiko实现ssh远程访问的方法
2013/12/03 Python
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
Python打造出适合自己的定制化Eclipse IDE
2016/03/02 Python
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
ubuntu安装sublime3并配置python3环境的方法
2018/03/15 Python
django进阶之cookie和session的使用示例
2018/08/17 Python
python try except返回异常的信息字符串代码实例
2019/08/15 Python
Pycharm 2020.1 版配置优化的详细教程
2020/08/07 Python
python3处理word文档实例分析
2020/12/01 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
模具专业毕业推荐信
2014/03/08 职场文书
毕业生学校推荐信范文
2014/05/21 职场文书
领导干部四风问题自我剖析材料
2014/09/25 职场文书
2019年怎样才能撰写出优秀的自荐信
2019/03/25 职场文书