栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python:Pandas系列-为什么使用loc?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python:Pandas系列-为什么使用loc?

显式胜于隐式。

df[boolean_mask]选择行为boolean_maskTrue的行,但是在某些情况下可能不希望出现以下情况:当df具有布尔值的列标签时:

In [229]: df = pd.Dataframe({True:[1,2,3],False:[3,4,5]}); dfOut[229]:    False  True 0      3      11      4      22      5      3

您可能要使用df[[True]]选择True列。相反,它引发一个ValueError:

In [230]: df[[True]]ValueError: Item wrong length 1 instead of 3.

与使用loc:

In [231]: df.loc[[True]]Out[231]:    False  True 0      3      1

相反,ValueError即使的结构df2几乎与df1上述相同,也不会出现以下情况:

In [258]: df2 = pd.Dataframe({'A':[1,2,3],'B':[3,4,5]}); df2Out[258]:    A  B0  1  31  2  42  3  5In [259]: df2[['B']]Out[259]:    B0  31  42  5

因此,df[boolean_mask]并不总是与相同df.loc[boolean_mask]。即使这可以说是不太可能的用例,但我还是建议您始终使用df.loc[boolean_mask]而不是,df[boolean_mask]因为df.loc的语法含义很明确。随着df.loc[indexer]您自动知道,df.loc被选择行。相反,不清楚是否df[indexer]会ValueError在不了解indexer和的细节的情况下选择行或列(或引发)df。

df.loc[row_indexer, column_index]可以选择行和列。df[indexer]只能根据中的值类型和列值的类型选择行或列(再次,它们是布尔值吗?)。indexerdf

In [237]: df2.loc[[True,False,True], 'B']Out[237]: 0    32    5Name: B, dtype: int64

将切片传递给df.loc端点时,端点将包含在范围内。将切片传递给时df[…],该切片将被解释为半开间隔:

In [239]: df2.loc[1:2]Out[239]:    A  B1  2  42  3  5In [271]: df2[1:2]Out[271]:    A  B1  2  4


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/641050.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号