详解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 lambda和Python def区别分析
Nov 30 Python
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
May 16 Python
Python函数式编程指南(二):从函数开始
Jun 24 Python
python自动翻译实现方法
May 28 Python
Python使用剪切板的方法
Jun 06 Python
python3使用requests模块爬取页面内容的实战演练
Sep 25 Python
python的paramiko模块实现远程控制和传输示例
Oct 13 Python
Python基于dom操作xml数据的方法示例
May 12 Python
numpy返回array中元素的index方法
Jun 27 Python
对matplotlib改变colorbar位置和方向的方法详解
Dec 13 Python
python实现网页自动签到功能
Jan 21 Python
使用python生成大量数据写入es数据库并查询操作(2)
Sep 23 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
粗略计算在线时间,bug:ip相同
2006/12/09 PHP
phpmail类发送邮件函数代码
2012/02/20 PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
2014/06/27 PHP
PHP图片库imagemagick安装方法
2014/09/23 PHP
浅析PHP类的反射来实现依赖注入过程
2018/02/06 PHP
php把字符串指定字符分割成数组的方法
2018/03/12 PHP
PHP实现通过strace定位故障原因的方法
2018/04/29 PHP
发现的以前不知道的函数
2006/09/19 Javascript
EasySlider 基于jQuery功能强大简单易用的滑动门插件
2010/06/11 Javascript
javascript提取URL的搜索字符串中的参数(自定义函数实现)
2013/01/22 Javascript
javascript代码运行不出来执行错误的可能情况整理
2013/10/18 Javascript
js清空表单数据的两种方式(遍历+reset)
2014/07/18 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
2015/12/31 Javascript
js从外部获取图片的实现方法
2016/08/05 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
使用xampp将angular项目运行在web服务器的教程
2019/09/16 Javascript
vue实现element表格里表头信息提示功能(推荐)
2019/11/20 Javascript
javascript实现左右缓动动画函数
2020/11/25 Javascript
[40:17]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第一场
2018/04/06 DOTA
[01:33:30]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第二场 2月5日
2021/03/11 DOTA
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
快速实现基于Python的微信聊天机器人示例代码
2017/03/03 Python
TensorFlow实现非线性支持向量机的实现方法
2018/04/28 Python
Python多继承原理与用法示例
2018/08/23 Python
使用python判断你是青少年还是老年人
2018/11/29 Python
django配置连接数据库及原生sql语句的使用方法
2019/03/03 Python
python django框架中使用FastDFS分布式文件系统的安装方法
2019/06/10 Python
如何使用python爬虫爬取要登陆的网站
2019/07/12 Python
ET Mall东森购物网:东森严选
2017/03/06 全球购物
索引覆盖(Index Covering)查询含义
2012/02/18 面试题
在校生自我鉴定
2014/01/23 职场文书
运动员获奖感言
2014/08/15 职场文书
就业意向协议书
2015/01/29 职场文书
工作会议简报
2015/07/20 职场文书
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python