首页 > 解决方案 > 基于列值删除行时“列名”的语法无效

问题描述

所以我根据列值删除行。我的 df 包含两个我正在过滤的特定列:['Exclude'、'Lost Flag']。两列都包含二进制值。我通过以下方式删除了“排除”为 1 的所有行:

df = df[df.Exclude !=1]

一切都很好。然而,当我试图用“Lost Flag”做同样的事情时:

df = df[df.Lost Flag !=1]

我在列名上得到 SyntaxError。我已经三次检查了列名,尝试了下划线,没有空格,并尝试使用 `` 转义空格。然后我尝试了 pd.query:

df = df.query('Lost Flag !=1')

我得到了同样的语法错误。我觉得我错过了一些明显的东西。

标签: pythonpandasdataframe

解决方案


尝试使用 ` 表示空格:

df.query('`Lost Flag`!=1')

来自文档

>>> df = pd.DataFrame({'A': range(1, 6),
...                    'B': range(10, 0, -2),
...                    'C C': range(10, 5, -1)})
>>> df
   A   B  C C
0  1  10   10
1  2   8    9
2  3   6    8
3  4   4    7
4  5   2    6

For columns with spaces in their name, you can use backtick quoting.

>>> df.query('B == `C C`')
   A   B  C C
0  1  10   10

推荐阅读