详解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访问mysql数据库的实现方法(2则示例)
Jan 06 Python
python逆向入门教程
Jan 15 Python
Flask框架使用DBUtils模块连接数据库操作示例
Jul 20 Python
pyqt5的QWebEngineView 使用模板的方法
Aug 18 Python
Python清空文件并替换内容的实例
Oct 22 Python
python调用staf自动化框架的方法
Dec 26 Python
python tkinter组件摆放方式详解
Sep 16 Python
Python3实现发送邮件和发送短信验证码功能
Jan 07 Python
python实现在内存中读写str和二进制数据代码
Apr 24 Python
python 3.8.3 安装配置图文教程
May 21 Python
Python爬取数据并实现可视化代码解析
Aug 12 Python
python 使用建议与技巧分享(四)
Aug 18 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
建立动态的WML站点(二)
2006/10/09 PHP
PHP中“简单工厂模式”实例代码讲解
2012/09/04 PHP
PHP中文分词 自动获取关键词介绍
2012/11/13 PHP
PHP会话处理的10个函数
2015/08/11 PHP
tagName的使用,留一笔
2006/06/26 Javascript
JS写的数字拼图小游戏代码[学习参考]
2008/10/29 Javascript
jQuery插件原来如此简单 jQuery插件的机制及实战
2012/02/07 Javascript
javascript实现日历控件(年月日关闭按钮)
2012/12/12 Javascript
js图片处理示例代码
2014/05/12 Javascript
jquery中checkbox全选失效的解决方法
2014/12/26 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
javascript实现日期按月份加减
2015/05/15 Javascript
JavaScript中捕获与冒泡详解及实例
2017/02/03 Javascript
Angular2库初探
2017/03/01 Javascript
js 事件的传播机制(实例讲解)
2017/07/20 Javascript
Mongoose实现虚拟字段查询的方法详解
2017/08/15 Javascript
vue 监听屏幕高度的实例
2018/09/05 Javascript
微信小程序云开发之新手环境配置
2019/05/16 Javascript
Nuxt.js实战和配置详解
2019/08/05 Javascript
解决Layui中templet中a的onclick参数传递的问题
2019/09/20 Javascript
python网络编程学习笔记(10):webpy框架
2014/06/09 Python
举例讲解Python面向对象编程中类的继承
2016/06/17 Python
Python正则表达式常用函数总结
2017/06/24 Python
分享几道你可能遇到的python面试题
2017/07/24 Python
pandas 空的dataframe 插入列名的示例
2018/10/30 Python
关于Pytorch的MLP模块实现方式
2020/01/07 Python
Python实现GIF图倒放
2020/07/16 Python
Python 如何反方向迭代一个序列
2020/07/28 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
全球知名提供各类营养保健品的零售商:Vitamin Shoppe
2016/10/09 全球购物
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
高中自我鉴定
2013/12/20 职场文书
爱心活动计划书
2014/04/26 职场文书
2014年物业公司工作总结
2014/11/22 职场文书
教你做个可爱的css滑动导航条
2021/06/15 HTML / CSS
oracle数据库去除重复数据
2022/05/20 Oracle