详解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中import reload __import__的区别详解
Oct 16 Python
Python实现的本地文件搜索功能示例【测试可用】
May 30 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
Dec 12 Python
Python调用服务接口的实例
Jan 03 Python
python中通过selenium简单操作及元素定位知识点总结
Sep 10 Python
python生成并处理uuid的实现方式
Mar 03 Python
Python定时任务APScheduler原理及实例解析
May 30 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
Sep 01 Python
python通过函数名调用函数的几种场景
Sep 23 Python
python实现人性化显示金额数字实例详解
Sep 25 Python
pymongo insert_many 批量插入的实例
Dec 05 Python
golang中的空接口使用详解
Mar 30 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 Streams(流)详细介绍及使用
2015/05/12 PHP
Zend Framework教程之Zend_Config_Ini用法分析
2016/03/23 PHP
php网页版聊天软件实现代码
2016/08/12 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
javascript 限制输入脚本大全
2009/11/03 Javascript
一个很有趣3D球状标签云兼容IE8
2014/08/22 Javascript
JS中的form.submit()不能提交表单的错误原因
2014/10/08 Javascript
form.submit()不能提交表单的原因分析
2014/10/23 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
详解Vue的computed(计算属性)使用实例之TodoList
2017/08/07 Javascript
解决vue js IOS H5focus无法自动弹出键盘的问题
2018/08/30 Javascript
微信小程序实现获取准确的腾讯定位地址功能示例
2019/03/27 Javascript
vue cli使用融云实现聊天功能的实例代码
2019/04/19 Javascript
利用一个简单的例子窥探CPython内核的运行机制
2015/03/30 Python
详解python的webrtc库实现语音端点检测
2017/05/31 Python
python爬虫之百度API调用方法
2017/06/11 Python
Python实现接受任意个数参数的函数方法
2018/04/21 Python
django中静态文件配置static的方法
2018/05/20 Python
Python中pip更新和三方插件安装说明
2018/07/08 Python
Python不同目录间进行模块调用的实现方法
2019/01/29 Python
Python3实现计算两个数组的交集算法示例
2019/04/03 Python
解决pycharm中的run和debug失效无法点击运行
2020/06/09 Python
Python2及Python3如何实现兼容切换
2020/09/01 Python
calendar在python3时间中常用函数举例详解
2020/11/18 Python
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
总结html5自定义属性有哪些
2020/04/01 HTML / CSS
Europcar德国:全球汽车租赁领域的领导者
2018/08/15 全球购物
新闻记者个人求职的自我评价
2013/11/28 职场文书
会计助理岗位职责
2014/02/17 职场文书
学生党员公开承诺书
2014/05/28 职场文书
销售员态度差检讨书
2014/10/26 职场文书
2015年护理工作总结范文
2015/04/03 职场文书
小学教学工作总结2015
2015/05/13 职场文书
红灯733-1型14管5波段半导体收音机
2021/04/22 无线电
python缺失值填充方法示例代码
2022/12/24 Python