pandas 如何使用df.query()函数来查询名称中带有撇号的列

dwbf0jvd  于 2023-03-21  发布在  其他
关注(0)|答案(2)|浏览(160)

列名为:鲍勃汉堡
一个解决方法是重命名列……但是我很好奇你是否真的可以查询上面的列,或者这确实是解析器中的一个限制。
编辑:这是我尝试的

df.query("`Bob's Burgers` == 'dfasdfa'")

我得到这个错误:语法错误:无法解析反引号

dsekswqp

dsekswqp1#

这似乎是解析器在处理奇数个引号字符时的一个限制。为了比较,我可以在名为Bob"s的列和查询Bob"s` == "dfasdfa"`上重现同样的问题,但在名为`'Bob's`的列和查询'Bob's== 'dfasdfa'上却没有。我使用的是Pandas 1.4.4。
因此,只需切换引号字符,例如:

df.query('''`Bob's Burgers` == "dfasdfa"''')
df.query("""`Bob's Burgers` == "dfasdfa" """)  # Note the trailing space

或者使用变量:

v = 'dfasdfa'
df.query("`Bob's Burgers` == @v")
col = df["Bob's Burgers"]
df.query("@col == 'dfasdfa'")
  • 注意,不可能为列 name 使用变量:
col = "Bob's Burgers"
df.query("@col == 'dfasdfa'")
...
KeyError: False
9q78igpj

9q78igpj2#

使用双引号的字符串比较为我工作:

df.query('`Bob\'s Burgers` == "l"')

相关问题