详解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 相关文章推荐
Windows和Linux下Python输出彩色文字的方法教程
May 02 Python
Django Admin 实现外键过滤的方法
Sep 29 Python
python2与python3的print及字符串格式化小结
Nov 30 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
Jan 23 Python
python实现移位加密和解密
Mar 22 Python
python根据多个文件名批量查找文件
Aug 13 Python
Python检查图片是否损坏及图片类型是否正确过程详解
Sep 30 Python
tensorflow常用函数API介绍
Apr 19 Python
简单了解如何封装自己的Python包
Jul 08 Python
Opencv常见图像格式Data Type及代码实例
Nov 02 Python
python中字符串的编码与解码详析
Dec 03 Python
python装饰器代码解析
Mar 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
Zerg兵种介绍
2020/03/14 星际争霸
PHP中break及continue两个流程控制指令区别分析
2011/04/18 PHP
php发送post请求函数分享
2014/03/06 PHP
Javascript调用XML制作连动下拉列表框
2006/06/25 Javascript
常用js脚本
2006/12/03 Javascript
javascript 触发HTML元素绑定的函数
2010/09/11 Javascript
jquery键盘事件介绍
2011/01/31 Javascript
js获取class的所有元素
2013/03/28 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2013/10/24 Javascript
JavaScript实现的图像模糊算法代码分享
2014/04/22 Javascript
Nodejs实现的一个静态服务器实例
2014/12/06 NodeJs
javascript事件冒泡实例分析
2015/05/13 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
2015/10/09 Javascript
js鼠标单击和双击事件冲突问题的快速解决方法
2016/07/11 Javascript
jquery 判断selection range 是否在容器中的简单实例
2016/08/02 Javascript
jQuery动态添加与删除tr行实例代码
2016/10/18 Javascript
讲解vue-router之什么是嵌套路由
2018/05/28 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
2018/09/28 Javascript
Vue表单输入绑定的示例代码
2018/11/01 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
jquery实现上传图片功能
2020/06/29 jQuery
[00:09]DOTA2全国高校联赛 精彩活动引爆全场
2018/05/30 DOTA
python爬取NUS-WIDE数据库图片
2016/10/05 Python
python在每个字符后添加空格的实例
2018/05/07 Python
使用tensorflow实现线性回归
2018/09/08 Python
python实现公司年会抽奖程序
2019/01/22 Python
python实现支付宝转账接口
2019/05/07 Python
Python中那些 Pythonic的写法详解
2019/07/02 Python
python 使用递归回溯完美解决八皇后的问题
2020/02/26 Python
歌唱比赛主持词
2014/03/18 职场文书
学习雷锋月活动总结
2014/07/03 职场文书
音乐之声音乐广播稿
2014/09/10 职场文书
2014入党积极分子破除“四风”思想汇报
2014/09/14 职场文书
喝酒驾驶检讨书
2014/10/01 职场文书
分居协议书范本
2014/11/03 职场文书
开平碉楼导游词
2015/02/06 职场文书