我所做的所有研究都指出,使用loc作为通过cols (S)值对数据进行过滤的方法,今天我正在阅读这,我通过测试的示例发现,在按其值过滤cols时,并不真正需要loc:
例:
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注意:我确实知道执行loc 或 iloc 会根据其索引和位置返回行。我不是根据这个功能进行比较。
但是,在过滤、执行"where“子句时,使用或不使用loc有什么区别呢?如果有的话。为什么我遇到的关于这个主题的所有例子都使用loc
发布于 2018-11-14 09:57:53
根据文档,loc接受一个用于选择行的布尔数组,在您的示例中
>>> df['a'] >= 15
>>>
0 False
1 False
2 False
3 False
4 False
5 False
6 True
7 True
Name: a, dtype: bool被视为布尔数组。
根据“loc”的作者Wes McKinney,您可以在这里省略df[df['a'] >= 15]并发布df[df['a'] >= 15]这一事实是一个特殊的方便情况。
直接引用他的书,用于数据分析的Python,第144页,df[val]是用来.
从DataFrame中选择单列或列序列;特例方便性:布尔数组(筛选行)、片(片行)或布尔DataFrame(根据某种标准设置值)
https://stackoverflow.com/questions/53297140
复制相似问题