运行 在 Pandas 中查询以数字开头的列 (Python 3)

Running query in Pandas against a column that starts with a number (Python 3)

我正在尝试 运行 对数据框的查询,我在其中评估以数字开头的列的值。像这样:

df.query('1A_col == "1000"')

我已经阅读了很多关于如何处理这个问题的帖子,一般的解决方案是在列名称周围使用反引号(因为它以数字开头,这将是 运行 通过 eval () 并且在 Python 中你不能有一个以数字等开头的变量名)。所以它应该是这样的:

df.query('`1A_col` == "1000"')

但这似乎只适用于 3 之前的 Python 版本。从 3 开始不再支持反引号。如果我 运行 这在 3 中,我会得到类似 'BACKTICK_QUOTED_STRING_1A_col' 未定义的内容。

所以,我的问题是 - 有没有办法在 Python 3 中实现这一点?如果是这样怎么办?此外,我需要使用 query(),因为在我的解决方案中,我允许用户将过滤器字符串传递到我的程序中,并有效地为他们执行查询。

数据框如下所示:

data = {'AB': [1,2,3], '1A_col': [1000,2,3]}
df = pd.DataFrame(data)

我正在使用 Python 3Pandas version 1.1:

In [1666]: sys.version
Out[1666]: '3.7.3 (default, Apr 24 2020, 18:51:23) \n[Clang 11.0.3 (clang-1103.0.32.62)]'

In [1663]: pd.__version__
Out[1663]: '1.1.0'

In [1664]: df.query('`1A_col` == 1000')
Out[1664]: 
   AB  1A_col
0   1    1000