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

使用loc和仅使用方括号来过滤Pandas / Python中的列有什么区别?

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

使用loc和仅使用方括号来过滤Pandas / Python中的列有什么区别?

在以下情况下,它们的行为相同:

  1. 选择单个列(
    df['A']
    df.loc[:, 'A']
    ->选择列A相同)
  2. 选择列列表(
    df[['A', 'B', 'C']]
    df.loc[:, ['A', 'B', 'C']]
    ->选择列A,B和C相同)
  3. 按行切片(
    df[1:3]
    df.iloc[1:3]
    ->选择第1行和第2行相同。但是,请注意,如果使用
    loc
    而不是进行切片,则
    iloc
    假设您具有RandeIndex,则将获得第1、2和3行。请参见此处的详细信息。)

但是,

[]
在以下情况下不起作用:

  1. 您可以使用
    df.loc[row_label]
  2. 您可以使用
    df.loc[[row_label1, row_label2]]
  3. 您可以使用
    df.loc[:, 'A':'C']

这三个不能用来完成

[]
。更重要的是,如果您的选择同时涉及到行和列,那么分配就会成问题。

df[1:3]['A'] = 5

这将选择行1和2,然后选择返回对象的列“ A”并为其分配值5。问题是,返回的对象可能是副本,因此这可能不会更改实际的Dataframe。这将引发
SettingWithCopyWarning。这种分配的正确方法是

df.loc[1:3, 'A'] = 5

使用

.loc
,可以确保修改原始Dataframe。它还允许您对列(
df.loc[:,'C':'F']
)进行切片,选择单行(
df.loc[5]
)和选择行列表(
df.loc[[1, 2, 5]]
)。

另请注意,这两个未同时包含在API中。

.loc
后来被添加为更强大,更明确的索引器。有关更多详细信息,请参见unutbu的答案。


注意:使用

[]
vs获取列
.
是一个完全不同的主题。
.
只是为了方便。它仅允许访问其名称为有效Python标识符的列(即它们不能包含空格,它们不能由数字组成…)。当名称与Series
/ Dataframe方法冲突时,不能使用它。它也不能用于不存在的列(即,
df.a = 1
如果没有column
,分配将不起作用
a
)。除此之外,
.
并且
[]
是相同的。



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

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

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