【问题标题】: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()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-02
        • 1970-01-01
        • 1970-01-01
        • 2012-05-11
        • 2019-11-16
        • 2014-09-18
        • 1970-01-01
        • 2017-01-28
        相关资源
        最近更新 更多