Pandas中loc,iloc与直接切片的区别
最近使用pandas,一直搞不清楚其中几种切片方法的区别,今天专门看了一下。
0. 把Series的行index或Dataframe的列名直接当做属性来索引。
如:
s.index_name df.column_name
但是这种方法索引的名字可能会与自带的方法冲突,比如min,max等等,所以可能会失效。另外,在新版本中,这种索引方法不能作为左值。
1. df[]直接索引
- 直接索引索引的是列,方口号里面的内容一般是列索引名。也可以接受一个列名组成的list来接受多个列名。
df['A']
df[['A', 'B']]
如果要交换两列,直接用这样的方法是不对的:
df.loc[:,['B', 'A']] = df[['A', 'B']]
这是因为pandas默认在赋值的时候回匹配列名,这里面的AB和BA实际上没有区别。如果想要交换两列的话,应该使用AB两列的值作为右值,这样就不带列索引名了。
df.loc[:,['B', 'A']] = df[['A', 'B']].values
- 索引slice对象,索引的是行,因为这样做更加符合常理
df=pd.DataFrame(np.arange(16).reshape((4,4)),index=list(range(4)),columns=['a','b','c','d']) df
Out[4]:
a b c d
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
df[0:1]
Out[6]:
a b c d
0 0 1 2 3
这里如果是Series,就可以使用单独的数字来索引;如果是Dataframe,就不可以,需要使用Python的slice对象形式的来索引。
2. loc,基于label的索引
由于pandas处理的是具有标签的表格对象,所以设计一套基于标签的索引方法是必要的,这就是loc
loc索引要注意的是:
- loc是基于标签的,如果给出的索引中包含没有的标签,会报错
- loc索引的开闭区间机制和Python传统的不同,而是与MATLAB类似的双侧闭区间,即只要出现,就会包含该标签
- 数字也可以放入loc中当做索引,但是这时数字指的是标签而不是 位置
df.loc[0:3,'a':'c']
Out[9]:
a b c
0 0 1 2
1 4 5 6
2 8 9 10
3 12 13 14
注意上面的0:3实际上并不是数字,而是行的label。
loc也可以接受布尔索引来取出其中的一些行
df.loc[df.loc[:,'a']>1]
3. iloc,完全基于位置的索引
iloc的用法完全和numpy中的数字索引一样,开闭区间的逻辑也和Python是相同的。
要注意的是,如果iloc方括号中直接给定一个数字或者一个slice的话,默认索引的是行。其中数字的情况会返回一个Series
df.loc[:,df.loc[1]>1]
Out[21]:
a b c d
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15 df.loc[:,df.loc[1]>4]
Out[22]:
b c d
0 1 2 3
1 5 6 7
2 9 10 11
3 13 14 15 df.iloc[1]
Out[23]:
a 4
b 5
c 6
d 7
Name: 1, dtype: int32 type(df.iloc[1])
Out[24]: pandas.core.series.Series
Pandas中loc,iloc与直接切片的区别的更多相关文章
- python pandas 中 loc & iloc 用法区别
转自:https://blog.csdn.net/qq_21840201/article/details/80725433 ### 随机生DataFrame 类型数据import pandas as ...
- Pandas:loc iloc ix用法
参考:Pandas中关于 loc \ iloc \ ix 用法的理解 相同点 使用形式都是 df.xxx[ para1 , para2 ] #xxx表示loc iloc ix#df表示一个DataFr ...
- Pandas中Loc用法总结
摘自:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.loc.html 具体用法,假设数据源为: > ...
- [译]pandas中的iloc loc的区别?
loc 从特定的 gets rows (or columns) with particular labels from the index. iloc gets rows (or columns) a ...
- pandas中Loc vs. iloc vs. ix vs. at vs. iat?
loc: only work on indexiloc: work on positionix: You can get data from dataframe without it being in ...
- Pandas的 loc iloc ix 区别
先看代码: In [46]: import pandas as pd In [47]: data = [[1,2,3],[4,5,6]] In [48]: index = [0,1] In [49]: ...
- pandas 定位 loc,iloc,ix
In [114]: df Out[114]: A B C D 2018-06-30 0.318501 0.613145 0.485612 0.918663 2018-07-31 0.614796 0. ...
- pandas的loc, iloc, ix的操作
参考: https://blog.csdn.net/xw_classmate/article/details/51333646 1. loc——通过行标签索引行数据 2. iloc——通过行号获取行数 ...
- Pandas之loc\iloc\ix
---------------------------------------------------------------------------------------------------- ...
随机推荐
- Day2课后作业:购物车简单版
PRODUCT_LIST = [ ['iphone7',6500], ['macbook',12000], ['pythonbook',66], ['bike',999], ['coffee',31] ...
- Java内置锁和简单用法
一.简单的锁知识 关于内置锁 Java具有通过synchronized关键字实现的内置锁,内置锁获得锁和释放锁是隐式的,进入synchronized修饰的代码就获得锁,走出相应的代码就释放锁. jav ...
- arcgis mdb 数据中的shp 如何合并一起
如上操作 一直往下就可以啦 选择数据源 就可以了,然后就可以load 其他数据啦 ,坐标系要一直
- [转]POI : How to Create and Use User Defined Functions
本文转自:http://poi.apache.org/spreadsheet/user-defined-functions.html How to Create and Use User Define ...
- vue cli 脚手架上多页面开发 支持webpack2.x
A yuri demo for webpack2 vue multiple page.我看到有一些项目多页面项目是基于webapck1.0的,我这个是在webpack2.x上布置修改. 项目地址: ...
- Spring框架学习-Spring的AOP概念详解
一.SpringAOP的概述. AOP(Aspect Oriented Programming),面向切面编程,通过预编译方式和运行期间动态代理实现程序的功能的统一维护的技术.AOP是OOP(面向对象 ...
- Ubuntu系统下安装字体和切换默认字体的方法
参考链接:http://my.oschina.net/itblog/blog/278566 打开Ubuntu的软件中心,搜索:tweak,安装[Unity Tweak Tool]这款软件,如图(由于我 ...
- Django分组查询
先补充两个知识点: 1.group by 大前提:可以按照任意字段分组,但是最好是按照分辨度比较低的来分组(重复比较多的分辨度比较低). group by分组可以单独使用,不搭配其他条件. 分组的字段 ...
- 带有res资源文件的项目 需要导成jar包 供别人使用的解决方法
比如说自己的成品项目,名字是MyObject,需要导出成jar包,让别人的项目调用,但是自己的项目还包含有图片.layout布局.libs里面的依赖包等等: 步骤: 1.MyObject项目需要“is ...
- 安卓ListView基础应用
listview简单描述 主页面: package com.example.listview; import com.lidroid.xutils.ViewUtils; import com.lidr ...