我注意到在Pandas DataFrame中选择列的三种方法:
使用loc选择列的第一种方法:
df_new = df.loc[:, 'col1']
第二种方法-看起来更简单,更快:
df_new = df['col1']
第三种方法-最方便:
df_new = df.col1
这三种方法之间有区别吗?我不这么认为,在这种情况下,我宁愿使用第三种方法。
我最奇怪的是为什么似乎有三种方法可以做同一件事。
在以下情况下,它们的行为相同:
df['A']
与df.loc[:, 'A']
->选择列A相同)df[['A', 'B', 'C']]
与df.loc[:, ['A', 'B', 'C']]
->选择列A,B和C相同)df[1:3]
与df.iloc[1:3]
->选择第1行和第2行相同。但是,请注意,如果使用loc
而不是进行切片,则iloc
假设您具有RandeIndex,则将获得第1、2和3行。请参见此处的详细信息。) 但是,[]
在以下情况下不起作用:
df.loc[row_label]
df.loc[[row_label1, row_label2]]
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
)。除此之外,.
并且[]
是相同的。
问题内容: 它们都有效吗?是出于某些原因而首选? 问题答案: 方括号是列表,括号是元组。 列表是可变的,这意味着您可以更改其内容: 而元组不是: 另一个主要区别是,元组是可哈希的,这意味着您可以将其用作字典的键。例如: 请注意,正如许多人指出的那样,您可以将元组加在一起。例如: 但是, 这并不意味着元组是可变的 。在上面的示例中,通过将两个元组加在一起作为参数来构造 新的 元组。原始元组未修改。为
问题内容: 即: 输出是相同的。 这个答案适用于这种情况吗? 问题答案: “点符号”,即为方便起见公开的属性访问。 你可以直接作为属性访问“系列”上的索引,“数据框架”上的列以及“面板”上的项目: 做同样的事情:它返回列的。 关于属性访问的一些警告: 你无法添加列(将无法正常工作,更糟的是:它会默默地实际上创建一个新属性而不是一个列-请在此处进行猴子修补) 如果列名中有空格或列名是整数,则将无法使
这里我理解哈希(#)符号将定义为本地模板变量,但是前面的星号是什么意思呢?还有,有必要吗? 下面是使用括号的示例: 我有点理解周围的括号将它绑定到HTML属性/Angular指令。这是否意味着它们是Angular计算表达式的指针?就像是Angular 1中的的等价物? 我猜真正的问题是,这些符号在Angular 2中有特殊的含义吗,知道何时使用每一个的最简单的方法是什么?谢谢!!
我来自C背景,最近开始学习python。我正在学习索引和选择数据。我遇到了在类,和在熊猫库。我不明白什么是?是功能还是属性?很多时候,我错误地使用而不是,并且没有得到实际的结果(但它不会给我带来错误)。 例子: 有谁能告诉我在哪里可以更多地研究这类运营商。
因此.loc和.iloc不是典型的函数。它们以某种方式使用[和]来包围参数,使其与普通数组索引相当。然而,我从未在另一个库中看到过这种情况(我可以想到,可能numpy就是这样的东西,我不知道它在技术上是如何工作的/在python代码中是如何定义的)。 本例中的括号是否只是函数调用的语法糖?如果是这样,那么如何让任意函数使用括号而不是括号呢?否则,它们的使用/定义有什么特殊之处?
问题内容: 我来自Javascript背景(可以同时通过属性和符号访问属性),所以请原谅我,但是Python中两者之间的区别到底是什么? 从我的实验它seeems认为应始终使用,既得到的索引或并从在某个键中获得的价值。这是否正确?如果不正确,什么时候在Python中使用? 问题答案: 点运算符用于访问任何对象的属性。例如,复数 具有(其中包括)两个属性和: 除此以外,它还有一个方法,它也是一个属性