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



我试图在一个数据帧上运行一个查询,在该数据帧中,我正在计算以数字开头的列的值。类似这样的东西:

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

我读过不少关于如何处理这一问题的文章,一般的解决方案是在列名周围使用反勾号(因为它以数字开头,这将通过eval((运行,在Python中,不能有以数字开头的var名称等(。所以它应该是这样的:

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

但这似乎只适用于3之前的Python版本。从3开始,不再支持倒勾。如果我在3中运行这个,我会得到一些类似于没有定义"BACKTICK_QUOTED_STRING_1A_col"的内容。

所以,我的问题是,有没有一种方法可以在Python3中实现这一点?如果是,怎么办?此外,我需要使用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

最新更新