详解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 27 Python
python中defaultdict的用法详解
Jun 07 Python
Python实现钉钉发送报警消息的方法
Feb 20 Python
详解pandas的外部数据导入与常用方法
May 01 Python
Python内置random模块生成随机数的方法
May 31 Python
Python 实现一个手机号码获取妹子名字的功能
Sep 25 Python
使用Bazel编译TensorBoard教程
Feb 15 Python
python将音频进行变速的操作方法
Apr 08 Python
Python super()函数使用及多重继承
May 06 Python
30行Python代码实现高分辨率图像导航的方法
May 22 Python
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
May 14 Python
总结Python连接CS2000的详细步骤
Jun 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
利用 window_onload 实现select默认选择
2006/10/09 PHP
php生成图形(Libchart)实例
2013/11/06 PHP
win7系统配置php+Apache+mysql环境的方法
2015/08/21 PHP
php项目中类的自动加载实例讲解
2019/09/12 PHP
jQuery checkbox全选/取消全选实现代码
2009/11/14 Javascript
jquery遍历数组与筛选数组的方法
2013/11/05 Javascript
js模拟hashtable的简单实例
2014/03/06 Javascript
jQuery实现瀑布流的取巧做法分享
2015/01/12 Javascript
AngularJS进行性能调优的7个建议
2015/12/28 Javascript
js实现3d悬浮效果
2017/02/16 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
jQuery中用on绑定事件时需注意的事项
2017/03/19 Javascript
vue loadmore 组件滑动加载更多源码解析
2017/07/19 Javascript
关于定制FileField中的上传文件名称问题
2017/08/22 Javascript
vue 实现类似淘宝星级评分的示例
2018/03/01 Javascript
解决vue项目打包后提示图片文件路径错误的问题
2018/07/04 Javascript
Node.js console控制台简单用法分析
2019/01/04 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
2019/08/26 Javascript
vue中如何实现后台管理系统的权限控制的方法步骤
2019/09/05 Javascript
Vue3.0数据响应式原理详解
2019/10/09 Javascript
python使用openpyxl库修改excel表格数据方法
2018/05/03 Python
ipython jupyter notebook中显示图像和数学公式实例
2020/04/15 Python
CSS3实现王者匹配时的粒子动画效果
2019/04/12 HTML / CSS
THE OUTNET英国官网:国际设计师品牌折扣网站
2016/08/14 全球购物
网络、C以及其他硬件方面的面试题
2016/08/23 面试题
法学专业毕业生自荐信范文
2013/12/18 职场文书
大学生演讲稿范文
2014/01/11 职场文书
文明家庭先进事迹材
2014/01/27 职场文书
医德考评自我评价
2014/09/14 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
2015大学生求职信范文
2015/03/20 职场文书
企业承诺书格式范文
2015/04/28 职场文书
责任书格式
2019/04/18 职场文书
话题作文之成长
2019/12/09 职场文书
使用pytorch实现线性回归
2021/04/11 Python