@@ -352,16 +352,51 @@ def test_divide_by_zero(self, zero, negative):
352
352
expected = np .array (values )
353
353
tm .assert_numpy_array_equal (result , expected )
354
354
355
- def test_pow (self ):
356
- # https://github.com/pandas-dev/pandas/issues/22022
357
- a = integer_array ([1 , np .nan , np .nan , 1 ])
358
- b = integer_array ([1 , np .nan , 1 , np .nan ])
355
+ def test_pow_scalar (self ):
356
+ a = pd .array ([0 , 1 , None , 2 ], dtype = "Int64" )
357
+ result = a ** 0
358
+ expected = pd .array ([1 , 1 , 1 , 1 ], dtype = "Int64" )
359
+ tm .assert_extension_array_equal (result , expected )
360
+
361
+ result = a ** 1
362
+ expected = pd .array ([0 , 1 , None , 2 ], dtype = "Int64" )
363
+ tm .assert_extension_array_equal (result , expected )
364
+
365
+ # result = a ** pd.NA
366
+ # expected = pd.array([None, 1, None, None], dtype="Int64")
367
+ # tm.assert_extension_array_equal(result, expected)
368
+
369
+ result = a ** np .nan
370
+ expected = np .array ([np .nan , 1 , np .nan , np .nan ], dtype = "float64" )
371
+ tm .assert_numpy_array_equal (result , expected )
372
+
373
+ # reversed
374
+ result = 0 ** a
375
+ expected = pd .array ([1 , 0 , None , 0 ], dtype = "Int64" )
376
+ tm .assert_extension_array_equal (result , expected )
377
+
378
+ result = 1 ** a
379
+ expected = pd .array ([1 , 1 , 1 , 1 ], dtype = "Int64" )
380
+ tm .assert_extension_array_equal (result , expected )
381
+
382
+ # result = pd.NA ** a
383
+ # expected = pd.array([1, None, None, None], dtype="Int64")
384
+ # tm.assert_extension_array_equal(result, expected)
385
+
386
+ result = np .nan ** a
387
+ expected = np .array ([1 , np .nan , np .nan , np .nan ], dtype = "float64" )
388
+ tm .assert_numpy_array_equal (result , expected )
389
+
390
+ def test_pow_array (self ):
391
+ a = integer_array ([0 , 0 , 0 , 1 , 1 , 1 , None , None , None ])
392
+ b = integer_array ([0 , 1 , None , 0 , 1 , None , 0 , 1 , None ])
359
393
result = a ** b
360
- expected = pd . core . arrays . integer_array ([1 , np . nan , np . nan , 1 ])
394
+ expected = integer_array ([1 , 0 , None , 1 , 1 , 1 , 1 , None , None ])
361
395
tm .assert_extension_array_equal (result , expected )
362
396
363
397
def test_rpow_one_to_na (self ):
364
398
# https://github.com/pandas-dev/pandas/issues/22022
399
+ # https://github.com/pandas-dev/pandas/issues/29997
365
400
arr = integer_array ([np .nan , np .nan ])
366
401
result = np .array ([1.0 , 2.0 ]) ** arr
367
402
expected = np .array ([1.0 , np .nan ])
0 commit comments