Python 数据帧通过[]和(attibute)选择数据

Python 数据帧通过[]和(attibute)选择数据,python,pandas,dataframe,Python,Pandas,Dataframe,我发现我在理解何时应该使用df[data]或df.data从数据帧(df)访问数据时遇到问题。 我主要使用[]方法来创建新列,但我也可以使用df[]和df.data访问数据,但是有什么区别,我如何更好地掌握这两种选择数据的方法?什么时候应该使用一个而不是另一个 使用[]将使用索引的值 a = "hello" df[a] # It will give you content at hello 使用 df.a # content at a 不同之处在于,对于第一个变

我发现我在理解何时应该使用
df[data]
df.data
从数据帧(df)访问数据时遇到问题。
我主要使用[]方法来创建新列,但我也可以使用
df[]
df.data
访问数据,但是有什么区别,我如何更好地掌握这两种选择数据的方法?什么时候应该使用一个而不是另一个

使用
[]
将使用索引的值

a = "hello"
df[a]        # It will give you content at hello
使用

df.a         # content at a
不同之处在于,对于第一个变量,您可以使用变量。

如果我理解正确,它们几乎是等价的,除了以下情况:

  • 只有在索引元素是有效的python标识符(例如不允许使用s.1)时,才能使用[the
    ]访问
  • 如果该属性与现有方法名称冲突,例如不允许使用s.min,则该属性将不可用
  • 类似地,如果该属性与以下任何列表冲突,则该属性将不可用:索引、长轴、短轴、项目、标签
  • 在这些情况下,标准索引仍然有效,例如s['1']、s['min']和s['index']将访问相应的元素或列
然而,尽管

索引运算符
[]
和属性运算符
提供了快速简便的 跨各种用例访问熊猫数据结构[…]

在生产中,您应该真正使用优化的panda数据访问方法,如
.loc
.iloc
.ix
,因为

[…]因为要访问的数据类型未知 事先,直接使用标准运算符有一些优化 限制。对于生产代码,我们建议您利用 优化的数据访问方法


您也不能使用
创建新列;你只能访问现有的栏目。太好了,这正是我想要的,所以除了创建新栏目和上面列出的案例之外,[]还有什么可以做的吗?至少我不知道,或者文档中提到。。。如果我错了,请有人纠正我。我将再次讨论这个答案,我想知道什么类型的数据/列会使['']低于.iloc、.ix、.loc?你能想出一些基本的例子吗?我不认为索引运算符
[]
(在文档中称为“标准运算符”)在任何方面都不如
.iloc
.ix
.loc
,尤其是在任何数据类型方面。相反,正如文档中指出的,使用“标准运算符”可能会导致效率方面的次优代码,因为Python解释器事先不知道要访问的数据类型。