Pandas之容易让人混淆的行选择和列选择
在刚学Pandas时,行选择和列选择非常容易混淆,在这里进行一下讨论和归纳
本文的数据来源:https://github.com/fivethirtyeight/data/tree/master/fandango
import pandas as pd
fandango = pd.read_csv('fandango_score_comparison.csv')
原始的数据如下(截取了一部分)

行选择
Pandas进行行选择一般有三种方法:
- 连续多行的选择用类似于python的列表切片
- 按照指定的索引选择一行或多行,使用loc[]方法
- 按照指定的位置选择一行多多行,使用iloc[]方法
第一种,使用类似于python的列表切片
n = fandango[1:3]

从结果可以看到,和python的列表切片一样,索引号从0开始,选择了索引号1和2的数据(不包括3)
第二种,按照指定的索引选择一行或多行,使用loc[]方法
o = fandango.loc[1] p = fandango.loc[1:3]

可以看到,o是一个Series,选择了索引号为1的那一行数据,注意p,它与第一种的列表索引最大的不同是包含了索引号为3的那一行数据
u = fandango.loc[[1,3]]

这里按照索引号选择不连续的行
第三种,按照指定的位置选择一行多多行,使用iloc[]方法
在上面的数据中,使用iloc[]和loc[]的效果是一样的,因为索引号都是从0开始并且连续不断,现在我要删除索引号为1和2的这两行
fandango_drop = fandango.drop([1,2], axis=0)

可以看到的确删除了两行数据
此时我仍然用loc[]来索引行号为2的那一行,就会出错
s = fandango_drop.loc[2]

但是,我使用iloc[]来进行一次
t = fandango_drop.iloc[2]

看到了吧,iloc[2]的意思是选择第三行的数据,也就是索引号为4的那一行数据,因为iloc[]的计算也是从0开始的,所以iloc[]适用于数据进行了筛选后造成索引号与原来不一致的情况
loc[]与iloc[]方法之间还有一个巨大的差别,那就是loc[]里的参数是对应的索引值即可,所以参数可以是整数,也可以是字符串。而iloc[]里的参数表示的是第几行的数据,所以只能是整数
列选择
列选择比较简单,只要直接把列名传递过去即可,如果有多列的数据,要单独指出列名或列的索引号
第一种,选择单列,选择了电影名称那一列
q = fandango['FILM']

第二种,通过指定列名选择多列
r = fandango[['FILM','Metacritic']]

第三种,非常容易让人混淆的,通过列的索引号选择多列
v = fandango[[0,1,2]]

其实,列也是有一个索引号的,看到这里不禁想问,那我要选择前5列呢?我不想写一个长列表,又不想逐个写出这5列的名称,能否用切片呢?
x = fandango[[0:5]]

事实证明,这是不行的,更好的方法是在参数中构建一个列表
w = fandango[list(range(5))]

更多的参考资料:http://pandas.pydata.org/pandas-docs/version/0.17.0/api.html#id3

Pandas之容易让人混淆的行选择和列选择的更多相关文章
- pandas数据处理基础——筛选指定行或者指定列的数据
pandas主要的两个数据结构是:series(相当于一行或一列数据机构)和DataFrame(相当于多行多列的一个表格数据机构). 本文为了方便理解会与excel或者sql操作行或列来进行联想类比 ...
- Openstack网络相关概念比较复杂,经常使人混淆,本文进行相关说明。
Openstack网络相关概念比较复杂,经常使人混淆,本文进行相关说明. 文中相关术语与缩写 英文 缩写 中文 Virtual Local Area Network VLAN 虚拟局域网 Virtua ...
- Quick BI独创千人千面的行级权限管控机制
摘要 就数据访问权限而言,阿里巴巴以“被动式授权”为主,你需要什么权限就申请什么权限.但是,在客户交流过程中,我们发现绝大多数企业都是集中式授权,尤其是面向个人的行级权限管控,管理复杂度往往呈几何增长 ...
- python DataFrame获取行数、列数、索引及第几行第几列的值
print df.columns.size#列数 2 print df.iloc[:,0].size#行数 3 print df.ix[[0]].index.values[0]#索引值 0 print ...
- QRowTable表格控件-支持hover整行、checked整行、指定列排序等
目录 一.开心一刻 二.嘴一嘴 三.效果展示 四.浅谈实现 五.自定义数据源 1.data函数 2.flags函数 六.自定义视图 1.目的 2.问题分析 七.测试 八.相关文章 原文链接:QRowT ...
- 如何获取ResultSet的行数和列数
当我们执行数据库查询返回一个ResultSet的时候,很多情况下我们需要知道这个ResultSet的大小,即它的行数和列数.我们知道它的列数可以通过resultSet.getMetaData().ge ...
- MYSQL 多行转多列
mysql 行变列(多行变成一行/多行合并成一行/多行合并成多列/合并行),我觉得这都是一个意思 数据库结构如图: 而我想让同一个人的不同成绩变成此人在这一行不同列上显示出来,此时分为2中展现: 第一 ...
- Oracle 多行变一列的方法
多行变一列的方法有很多,觉得这个第一眼看懂了当时就用的这个办法. 情况是这样的.以下数据前几列是一样的,需要把VAT_VALUE_CHAR 的值放在同一行上. SELECT * FROM ps_vat ...
- LayoutControl让一个控件占据多行或者多列
拖动一个layoutcontrol到form上之后,会自动附带一个layoutgroup 设置layoutgroup的layoutmode为table 设置layoutgroup的OptionsTab ...
随机推荐
- 琐碎-关于StringTokenizer工具
属于:java.util包 构造函数: 1. StringTokenizer(String str):构造一个用来解析str的StringTokenizer对象.java默认的分隔符是“空格”.“制表 ...
- 电商平台如何接入快递鸟电子面单API?
快递鸟是全球物流接口服务商,为电商 ERP.电商平台.仓储.清关公司提供物流跟踪.电子面单.智选物流.物流金融.在线下单等服务,解决电商的物流管理模块和金融模块.现就对快递鸟电子面单API做基本描述, ...
- A Famous Music Composer
描述 Mr. B is a famous music composer. One of his most famous work was his set of preludes. These 24 p ...
- 仿UC浏览器图片加载进度条
前几天用UC浏览器看新闻(无意中给UC打了广告),看到它的图片加载进度条,正好最近有时间,所以就自己写了一个. 效果图如下 进度条的底色和填充颜色都可以调整. 首先中间的笑脸作为一个整体,其实现代码如 ...
- Android Studio 复制粘贴图片到drawable文件夹没有效果 - 解决方法
我想放一些图片到drawable文件夹里面,但是简单的复制文件,粘贴文件,或者拖拽文件,都不起作用.不知道为什么,之前是可以的,突然就不行了. 解决方案 在drawable文件夹的目录上右键,选择Re ...
- [Oracle AR]Territory Flexfield
You can use the Territory Flexfield for recording and customized reporting on your territory informa ...
- 《HTML5 and Javascript Web Apps》读书笔记要点摘录
必须要承认的是这本由Wesley Hales编写的书对要进军web apps 的程序员(媛)来说绝对是福音,很薄的一本书简明扼要的说明了web apps的实现原理,实现工具以及优缺点.拾人牙慧,作此摘 ...
- 【Knockout】一、认识Knockout,你会爱上它
介绍 Knockout简称ko,是一个轻量级的javascript类库,采用MVVM设计模式(即Model.view.viewModel),简单优雅的实现了双向绑定,实时更新,帮助您使用干净的数据模型 ...
- JAVA UDP网络编程学习笔记
一.UDP网络编程概述 采用TCP协议通信时,客户端的Socket必须先与服务器建立连接,连接建立成功后,服务器端也会持有客户端连接的Socket,客户端的Socket与服务器端的Socket是对应的 ...
- Appcn 移动开发 前台与服务器数据交互
第一次写.嘿嘿. 言归正传,这几天开始学习移动开发,使用的是Appcan平台.Appcan平台采用HTML5+CSS3做开发 实现跨平台,正好可以满足我们的业务需求. Appacn和数据库进行交互的方 ...