Pandas查询功能不适用于列名中的空格

Bhu*_*ant 13 python sql dataframe pandas

我有一个数据框,列名中有空格.我正在尝试使用query方法来获得结果."c"列工作正常,但"a b"出错

import pandas as pd
a = pd.DataFrame(columns=["a b", "c"])
a["a b"] = [1,2,3,4]
a["c"] = [5,6,7,8]
a.query('a b==5')
Run Code Online (Sandbox Code Playgroud)

为此,我收到此错误:

a b ==5
  ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我不想用其他字符填充空格,如'_'等.

有一个hack使用pandasql将变量名放在括号示例中:[ab]

jpp*_*jpp 10

DataFrame.query()如果列名中有空格,则无法使用.考虑如果你有列名称会发生​​什么DataFrame.eval(),pd.DataFrame.querya; 你需要什么会有些含糊不清.

相反,你可以使用b:

a.query('`a b`==5')
Run Code Online (Sandbox Code Playgroud)

由于您只是过滤行,因此可以a b完全省略访问者:

df = df.loc[df['a b'] == 5]
Run Code Online (Sandbox Code Playgroud)


Jar*_*rno 9

从熊猫0.25开始,您将能够使用反引号转义列名称,因此您可以

a.query('`a b` == 5') 
Run Code Online (Sandbox Code Playgroud)

  • 简单又容易,很好的解决方案。谢谢! (2认同)