python – Pandas:查询字符串,其中列名包含特殊字符

我正在使用具有如下结构的数据框:

In[75]: df.head(2)
Out[75]: 
  statusdata             participant_id association  latency response  \
0   complete  CLIENT-TEST-1476362617727       seeya      715  dislike   
1   complete  CLIENT-TEST-1476362617727      welome      800     like   

   stimuli elementdata statusmetadata demo$gender  demo$question2  \
0  Sample B    semi_imp       complete        male              23   
1  Sample C    semi_imp       complete      female              23   

我希望能够针对列$gender运行查询字符串.

即,

df.query("demo$gender=='male'")

但这与$符号有问题.如果我用另一个分隔符(例如 – )替换$符号,则问题仍然存在.我可以修复我的查询字符串以避免此问题.我宁愿不重命名列,因为这些列与我的应用程序的其他部分紧密对应.

我真的想坚持使用查询字符串,因为它是由我们的技术堆栈的另一个组件提供的,并且创建一个解析器对于看似简单的问题来说将是一个沉重的提升.

提前致谢.

最佳答案 当前的查询实现要求字符串是有效的python表达式,因此列名必须是有效的python标识符.您的两个选项是重命名列,或使用普通布尔过滤器,如下所示:

df[df['demo$gender'] =='male']
点赞