繁体   English   中英

Pandas,loc vs non loc for boolean indexing

[英]Pandas, loc vs non loc for boolean indexing

我所做的所有研究都指出使用loc作为通过col(s)值过滤数据帧的方法,今天我正在阅读这篇文章并且我通过我测试的例子发现, loc并非真的通过它的值过滤cols时需要:

EX:

df = pd.DataFrame(np.arange(0, 20, 0.5).reshape(8, 5), columns=['a', 'b', 'c', 'd', 'e'])    

df.loc[df['a'] >= 15]

      a     b     c     d     e
6  15.0  15.5  16.0  16.5  17.0
7  17.5  18.0  18.5  19.0  19.5

df[df['a'] >= 15]

      a     b     c     d     e
6  15.0  15.5  16.0  16.5  17.0
7  17.5  18.0  18.5  19.0  19.5

注意:我确实知道使用lociloc按行索引和位置返回行。 我不是基于这个功能进行比较。

但是在过滤时,做“ where ”子句使用或不使用loc之间的区别是什么? 如果有的话。 为什么我遇到的关于这个主题的所有例子都使用loc

根据文档, loc接受一个布尔数组来选择行,在你的情况下

>>> df['a'] >= 15
>>> 
0    False
1    False
2    False
3    False
4    False
5    False
6     True
7     True
Name: a, dtype: bool

被视为布尔数组。

根据pandas的作者Wes McKinney的说法,你可以在这里省略loc并发出df[df['a'] >= 15]这一事实是一个特例。

直接从他的书“ Python for Data Analysis”中引用,p。 144, df[val]用于......

从DataFrame中选择单列或列序列; 特殊情况便利:布尔数组(过滤行) ,切片(切片行)或布尔数据框架(基于某些标准设置值)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM