详解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实现多线程暴力破解登陆路由器功能代码分享
Jan 04 Python
python对DICOM图像的读取方法详解
Jul 17 Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
Jan 04 Python
Python实现的寻找前5个默尼森数算法示例
Mar 25 Python
解决pandas read_csv 读取中文列标题文件报错的问题
Jun 15 Python
Django跨域请求问题的解决方法示例
Jun 16 Python
pyhanlp安装介绍和简单应用
Feb 22 Python
Python批量查询关键词微信指数实例方法
Jun 27 Python
python opencv 二值化 计算白色像素点的实例
Jul 03 Python
python中数据库like模糊查询方式
Mar 02 Python
python实现俄罗斯方块小游戏
Apr 24 Python
Django 实现图片上传和下载功能
Dec 31 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
上海地方志办公室-上海电子仪表工业志
2021/03/04 无线电
php 删除指定文件夹的实例讲解
2017/07/25 PHP
Javascript typeof 用法
2008/12/28 Javascript
使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
2012/05/30 Javascript
JavaScript控制Session操作方法
2013/01/17 Javascript
js读取注册表的键值示例
2013/09/25 Javascript
js控制input框只读实现示例
2014/01/20 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
JavaScript页面模板库handlebars的简单用法
2015/03/02 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
jQuery弹出窗口打开链接的实现代码
2016/12/24 Javascript
Javascript的this用法
2017/01/16 Javascript
微信小程序 开发经验整理
2017/02/15 Javascript
JS实现的RC4加密算法示例
2018/08/16 Javascript
vue input实现点击按钮文字增删功能示例
2019/01/29 Javascript
全网小程序接口请求封装实例代码
2020/11/06 Javascript
vue 实现图片懒加载功能
2020/12/31 Vue.js
[55:45]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第一局
2016/02/28 DOTA
在Python中使用正则表达式的方法
2015/08/13 Python
基于Python3 逗号代码 和 字符图网格(详谈)
2017/06/22 Python
python多进程实现进程间通信实例
2017/11/24 Python
Python实现的当前时间多加一天、一小时、一分钟操作示例
2018/05/21 Python
Python分支语句与循环语句应用实例分析
2019/05/07 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
使用Tkinter制作信息提示框
2020/02/18 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
Python unittest如何生成HTMLTestRunner模块
2020/09/08 Python
Python操作Excel的学习笔记
2021/02/18 Python
大学生个人自荐信
2014/02/24 职场文书
主办会计岗位职责
2014/03/13 职场文书
研讨会主持词
2014/04/02 职场文书
房屋出租协议书
2014/04/10 职场文书
心理学专业求职信
2014/06/16 职场文书
聘任证明怎么写
2015/03/02 职场文书
个人总结格式范文
2015/03/09 职场文书
家庭暴力离婚起诉书
2015/05/18 职场文书