您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

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

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

这三个不能用来完成[]。更重要的是,如果您的选择同时涉及到行和列,那么分配就会成问题。

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)。除此之外,.并且[]是相同的。

python 2022/1/1 18:31:11 有260人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶