详解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循环监控远程端口的方法
Mar 14 Python
分享一下Python 开发者节省时间的10个方法
Oct 02 Python
分享Python字符串关键点
Dec 13 Python
Pyqt5 基本界面组件之inputDialog的使用
Jun 25 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
Feb 12 Python
python 使用while循环输出*组成的菱形实例
Apr 12 Python
通过Python实现一个简单的html页面
May 16 Python
浅谈python 调用open()打开文件时路径出错的原因
Jun 05 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
Jul 03 Python
Python3爬虫中Selenium的用法详解
Jul 10 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
Dec 10 Python
Python绘制数码晶体管日期
Feb 19 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
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
php 可变函数使用小结
2018/06/12 PHP
Javascript实现关联数据(Linked Data)查询及注意细节
2013/02/22 Javascript
JS在TextArea光标位置插入文字并实现移动光标到文字末尾
2013/06/21 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
JavaScript设计模式之代理模式介绍
2014/12/28 Javascript
使用jQuery实现Web页面换肤功能的要点解析
2016/05/12 Javascript
jQuery删除节点用法示例(remove方法)
2016/09/08 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
2017/04/20 Javascript
jQuery绑定事件方法及区别(bind,click,on,live,one)
2017/08/14 jQuery
Vue中自定义全局组件的实现方法
2017/12/08 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
2018/01/09 Javascript
Vue使用zTree插件封装树组件操作示例
2019/04/25 Javascript
JavaScript实现背景自动切换小案例
2019/09/27 Javascript
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
使用python遍历指定城市的一周气温
2017/03/31 Python
Python3几个常见问题的处理方法
2019/02/26 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
python set内置函数的具体使用
2019/07/02 Python
使用Python轻松完成垃圾分类(基于图像识别)
2019/07/09 Python
Python配置文件处理的方法教程
2019/08/29 Python
tensorflow 重置/清除计算图的实现
2020/01/19 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
matplotlib交互式数据光标mpldatacursor的实现
2021/02/03 Python
python 制作网站小说下载器
2021/02/20 Python
matplotlib bar()实现百分比堆积柱状图
2021/02/24 Python
韩国女装NO.1网店:STYLENANDA
2016/09/16 全球购物
德国柯吉澳趣味家居:Koziol
2017/08/24 全球购物
main 函数执行以前,还会执行什么代码
2013/04/17 面试题
教师专业理论水平的自我评价分享
2013/11/09 职场文书
小学生竞选班长演讲稿
2014/04/24 职场文书
我为党旗添光彩演讲稿
2014/09/13 职场文书
2014教师教育实践活动对照检查材料思想汇报
2014/09/21 职场文书
2014年扶贫帮困工作总结
2014/12/09 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript
php png失真的原因及解决办法
2021/11/17 PHP