@@ -2797,7 +2797,7 @@ def test_comparison_label_based(self):
2797
2797
assert_series_equal (result ,expected )
2798
2798
2799
2799
result = a | Series ([])
2800
- expected = Series ([True , True , True ], list ('bca' ))
2800
+ expected = Series ([True , False , True ], list ('bca' ))
2801
2801
assert_series_equal (result ,expected )
2802
2802
2803
2803
# vs non-matching
@@ -2806,14 +2806,43 @@ def test_comparison_label_based(self):
2806
2806
assert_series_equal (result ,expected )
2807
2807
2808
2808
result = a | Series ([1 ],['z' ])
2809
- expected = Series ([True , True , True ], list ('bca' ))
2809
+ expected = Series ([True , False , True ], list ('bca' ))
2810
2810
assert_series_equal (result ,expected )
2811
2811
2812
2812
# identity
2813
2813
# we would like s[s|e] == s to hold for any e, whether empty or not
2814
2814
for e in [Series ([]),Series ([1 ],['z' ]),Series (['z' ]),Series (np .nan ,b .index ),Series (np .nan ,a .index )]:
2815
2815
result = a [a | e ]
2816
- assert_series_equal (result ,a )
2816
+ assert_series_equal (result ,a [a ])
2817
+
2818
+ # vs scalars
2819
+ index = list ('bca' )
2820
+ t = Series ([True ,False ,True ])
2821
+
2822
+ for v in [True ,1 ,2 ]:
2823
+ result = Series ([True ,False ,True ],index = index ) | v
2824
+ expected = Series ([True ,True ,True ],index = index )
2825
+ assert_series_equal (result ,expected )
2826
+
2827
+ for v in [np .nan ,'foo' ]:
2828
+ self .assertRaises (TypeError , lambda : t | v )
2829
+
2830
+ for v in [False ,0 ]:
2831
+ result = Series ([True ,False ,True ],index = index ) | v
2832
+ expected = Series ([True ,False ,True ],index = index )
2833
+ assert_series_equal (result ,expected )
2834
+
2835
+ for v in [True ,1 ]:
2836
+ result = Series ([True ,False ,True ],index = index ) & v
2837
+ expected = Series ([True ,False ,True ],index = index )
2838
+ assert_series_equal (result ,expected )
2839
+
2840
+ for v in [False ,0 ]:
2841
+ result = Series ([True ,False ,True ],index = index ) & v
2842
+ expected = Series ([False ,False ,False ],index = index )
2843
+ assert_series_equal (result ,expected )
2844
+ for v in [np .nan ]:
2845
+ self .assertRaises (TypeError , lambda : t & v )
2817
2846
2818
2847
def test_between (self ):
2819
2848
s = Series (bdate_range ('1/1/2000' , periods = 20 ).asobject )
@@ -2851,12 +2880,14 @@ def test_scalar_na_cmp_corners(self):
2851
2880
def tester (a , b ):
2852
2881
return a & b
2853
2882
2854
- self .assertRaises (ValueError , tester , s , datetime (2005 , 1 , 1 ))
2883
+ self .assertRaises (TypeError , tester , s , datetime (2005 , 1 , 1 ))
2855
2884
2856
2885
s = Series ([2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , datetime (2005 , 1 , 1 )])
2857
2886
s [::2 ] = np .nan
2858
2887
2859
- assert_series_equal (tester (s , list (s )), s )
2888
+ expected = Series (True ,index = s .index )
2889
+ expected [::2 ] = False
2890
+ assert_series_equal (tester (s , list (s )), expected )
2860
2891
2861
2892
d = DataFrame ({'A' : s })
2862
2893
# TODO: Fix this exception - needs to be fixed! (see GH5035)
0 commit comments