@@ -1030,3 +1030,34 @@ def test_invalid_type_for_operator_raises(self, parser, engine, op):
1030
1030
1031
1031
with pytest .raises (TypeError , match = msg ):
1032
1032
df .eval ('a {0} b' .format (op ), engine = engine , parser = parser )
1033
+
1034
+
1035
+ class TestDataFrameQueryBacktickQuoting (object ):
1036
+
1037
+ def setup_method (self , method ):
1038
+ self .df = DataFrame ({'A' : [1 , 2 , 3 ],
1039
+ 'B B' : [3 , 2 , 1 ],
1040
+ 'C C' : [4 , 5 , 6 ]})
1041
+
1042
+ def teardown_method (self , method ):
1043
+ del self .df
1044
+
1045
+ def test_single_backtick_variable_query (self ):
1046
+ res = self .df .query ('1 < `B B`' )
1047
+ expect = self .df [1 < self .df ['B B' ]]
1048
+ assert_frame_equal (res , expect )
1049
+
1050
+ def test_two_backtick_variables_query (self ):
1051
+ res = self .df .query ('1 < `B B` and 4 < `C C`' )
1052
+ expect = self .df [(1 < self .df ['B B' ]) & (4 < self .df ['C C' ])]
1053
+ assert_frame_equal (res , expect )
1054
+
1055
+ def test_single_backtick_variable_expr (self ):
1056
+ res = self .df .eval ('A + `B B`' )
1057
+ expect = self .df ['A' ] + self .df ['B B' ]
1058
+ assert_series_equal (res , expect )
1059
+
1060
+ def test_two_backtick_variables_expr (self ):
1061
+ res = self .df .eval ('`B B` + `C C`' )
1062
+ expect = self .df ['B B' ] + self .df ['C C' ]
1063
+ assert_series_equal (res , expect )
0 commit comments