详解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 22 Python
Python的socket模块源码中的一些实现要点分析
Jun 06 Python
详解Python的collections模块中的deque双端队列结构
Jul 07 Python
python编写分类决策树的代码
Dec 21 Python
matplotlib绘制动画代码示例
Jan 02 Python
python远程连接服务器MySQL数据库
Jul 02 Python
python实现泊松图像融合
Jul 26 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
Sep 04 Python
对python的输出和输出格式详解
Dec 08 Python
python多线程使用方法实例详解
Dec 30 Python
Win10里python3创建虚拟环境的步骤
Jan 31 Python
python 使用while循环输出*组成的菱形实例
Apr 12 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实现MVC开发得最简单的方法――模型
2007/04/10 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
2019/04/23 PHP
JS事件Event元素(兼容IE,Firefox,Chorme)
2012/11/01 Javascript
jquery滚动到顶部底部代码
2015/04/20 Javascript
使用AngularJS来实现HTML页面嵌套的方法
2015/06/17 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
使用jquery获取url及url参数的简单实例
2016/06/14 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
2016/08/17 Javascript
JS如何判断浏览器类型和详细区分IE各版本浏览器
2017/03/04 Javascript
vue.js中proxyTable 转发请求的实现方法
2018/09/20 Javascript
vue单页面实现当前页面刷新或跳转时提示保存
2018/11/02 Javascript
用JavaScript实现贪吃蛇游戏
2020/10/23 Javascript
使用python实现strcmp函数功能示例
2014/03/25 Python
python中使用PIL制作并验证图片验证码
2018/03/15 Python
Python自定义装饰器原理与用法实例分析
2018/07/16 Python
python在html中插入简单的代码并加上时间戳的方法
2018/10/16 Python
解决python opencv无法显示图片的问题
2018/10/28 Python
python selenium 查找隐藏元素 自动播放视频功能
2019/07/24 Python
django项目用higcharts统计最近七天文章点击量
2019/08/17 Python
Python环境Pillow( PIL )图像处理工具使用解析
2019/09/12 Python
python支持多线程的爬虫实例
2019/12/21 Python
HTML5 Web Database 数据库的SQL语句的使用方法
2012/12/09 HTML / CSS
详解HTML5 Canvas绘制不规则图形时的非零环绕原则
2016/03/21 HTML / CSS
Origins加拿大官网:雅诗兰黛集团高端植物护肤品牌
2017/11/19 全球购物
捷克体育用品购物网站:D-sport
2017/12/28 全球购物
商务英语专业自荐信
2013/10/14 职场文书
车间副主任岗位职责
2013/12/24 职场文书
保险经纪人求职信
2014/03/11 职场文书
工伤事故赔偿协议书
2014/04/15 职场文书
我心目中的好老师活动方案
2014/08/19 职场文书
文体活动总结
2015/02/04 职场文书
应届毕业生求职简历自我评价
2015/03/02 职场文书
舌尖上的中国观后感
2015/06/02 职场文书
亮剑精神观后感
2015/06/05 职场文书
sql server删除前1000行数据的方法实例
2021/08/30 SQL Server
Mysql关于数据库是否应该使用外键约束详解说明
2021/10/24 MySQL