pandas中loc iloc ix的区别
来源:互联网 发布:网络收音下载 编辑:程序博客网 时间:2024/05/20 04:15
在pandas0.20.0及以上版本,ix已经丢弃,请尽量使用loc和iloc;
观察下面的代码:
>>> s = pd.Series(np.nan, index=[23,34,61,14,0, 1, 2, 3])>>> s23 NaN34 NaN61 NaN14 NaN0 NaN1 NaN2 NaN3 NaNdtype: float64
分别输入s.iloc[:2],和s.loc[:2]会有什么区别?试试就知道了
>>> s.iloc[:2]23 NaN34 NaNdtype: float64>>> s.loc[:2]23 NaN34 NaN61 NaN14 NaN0 NaN1 NaN2 NaNdtype: float64>>>
由上面的代码可知,iloc是针对位置的(position-based),而loc是针对标签的(label-based)。即:iloc[:2]返回的是前两行的内容;若假设标签2所在的行为m,则loc[:2]返回的是前m(包括标签2所在的行)行的内容。
那ix呢?观察代码:
>>> s.ix[:2]23 NaN34 NaN61 NaN14 NaN0 NaN1 NaN2 NaNdtype: float64>>>
这里ix的表现和loc一样,仅此而已嘛?再看下一段代码:
>>> s2a NaNb NaNc NaN1 NaN2 NaN3 NaNdtype: float64>>> s2.ix[:2]a NaNb NaNdtype: float64>>>
这里ix的表现又和iloc一样了,很奇怪是不是?但仔细观察这两段代码的差别,我们发现,当索引是整型时ix表现的和loc一样,而当索引是混合型时ix表现的和iloc一样。不过这个结论并不是绝对的,下面我们将会说到。现在我们先总结一下,ix容易让人混淆,还是尽量使用另外两个的好。但是,有时当我们想同时基于标签和位置来选取一个df的行和列怎么办?这就引出了ix的例外,对于ix来说,如果是对列进行切片,则不管是整型还是混合型,默认的行为都是和loc一样的。请看例子:
>>> df a b c 0 1a NaN NaN NaN NaN NaNb NaN NaN NaN NaN NaNc NaN NaN NaN NaN NaNd NaN NaN NaN NaN NaNe NaN NaN NaN NaN NaN>>> df.ix[:'c',:4] a b c 0a NaN NaN NaN NaNb NaN NaN NaN NaNc NaN NaN NaN NaN
尽管很优雅,但是ix已经被丢弃了,那么我们用iloc和loc该如何进行这样的切片呢?下面将展示如何利用iloc实现上述操作。
>>> df.iloc[:df.index.get_loc('c')+1,:4] a b c 0a NaN NaN NaN NaNb NaN NaN NaN NaNc NaN NaN NaN NaN
这里,我们用到了get_loc(label)这个函数,它的功能是“获取目的标签在索引中的位置”。这里,你可能会问,问什么不用df.iloc[:’c’,:4]呢?还有这种操作?不存在的!!切记:当索引都是整型时,利用iloc和loc都是合法的,但含义不同,iloc[:m]表示选取前m行,loc表示选取到标签m的所有行(包含m那一行);当索引时混合型时,只能用iloc。
- pandas中loc、iloc、ix的区别
- pandas中loc iloc ix的区别
- pandas中ix loc iloc的区别
- Pandas中loc,iloc,ix的区别
- Pandas的 loc iloc ix 区别
- Pandas的 loc iloc ix 区别
- Pandas的 loc iloc ix 区别
- Pandas的 loc iloc ix 区别
- python pandas中ix,iloc,loc的区别
- Pandas中iloc和loc以及ix的区别
- Pandas中loc,iloc和ix的区别
- Pandas中ix,loc,iloc有什么区别?
- Pandas中ix,loc,iloc有什么区别?
- python pandas (ix & iloc &loc) 的区别
- python pandas (ix & iloc &loc) 的区别
- python pandas (ix & iloc &loc) 的区别
- python pandas (ix & iloc &loc) 的区别
- 快速学会pandas中Dataframe索引.ix,.iloc,.loc的使用以及区别
- Java实现-翻转链表
- mtk 功能机驱动调试
- java中回调函数的理解
- Android基础之电话监听
- 为什么要使用变调夹 简单易懂版
- pandas中loc iloc ix的区别
- 4.1.1--二分--Can you solve this equation?
- 标准IO缓冲详解全缓冲、行缓冲、不缓冲
- javaweb 的错误信息在tomcat的位置
- Java+Selenium3方法篇11-findElement之By CSS
- 关于ListView嵌套ListView,外层Item点击事件的冲突解决
- 浅谈类加载器
- 负载均衡算法WRR介绍
- Java读取复制超大文件加速