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