【问题标题】:SyntaxError when accessing column named "class" in pandas DataFrame访问 pandas DataFrame 中名为“class”的列时出现语法错误
【发布时间】:2018-08-14 17:58:23
【问题描述】:
我有一个名为“dataset”的 pandas DataFrame,它包含一个名为“class”的列
当我执行以下行时,我得到 SyntaxError: invalid syntax
print("Unique values in the Class column:", dataset.class.unique())
它适用于另一个列名,但不适用于“类”
如何在 pandas 中使用关键字作为列名?
【问题讨论】:
标签:
python
pandas
syntax-error
【解决方案1】:
class 是 python 中的关键字。经验法则:每当您处理 不能 在 python 中用作有效变量名的列名时,您必须使用方括号表示法来访问:dataset['class'].unique()。
当然,这里也有例外,但它们对您不利。例如,min/max 在 python 中是一个有效的变量名(即使它隐藏了内置函数)。但是,对于 pandas,您不能使用属性访问表示法来引用这样的命名列。还有更多这样的例外,它们在文档中进行了列举。
进一步阅读的好地方是Attribute Access 上的文档。具体来说,红色的警告框),我在这里为后代添加:
-
仅当索引元素是有效的 Python 时,您才能使用此访问权限
标识符,例如不允许使用s.1。请参阅此处了解
有效的标识符。
-
如果与现有属性冲突,该属性将不可用
方法名称,例如不允许使用s.min,但可以使用s['min']。
-
同样,如果属性与
以下列表中的任何一个:index, major_axis, minor_axis, items。
-
在任何这些情况下,标准索引仍然有效,例如s['1'],
s['min'] 和 s['index'] 将访问相应的元素或
列。
【解决方案2】:
class 是保留字。
你可以这样做 dataset['class'].unique()