Skip to content

Commit 469da36

Browse files
phoflim-vinicius
authored and
im-vinicius
committed
CLN: Simplify to_masked implementation (pandas-dev#52920)
1 parent acf454b commit 469da36

File tree

1 file changed

+6
-29
lines changed

1 file changed

+6
-29
lines changed

pandas/core/arrays/arrow/array.py

+6-29
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
)
7070
from pandas.core.strings.base import BaseStringArrayMethods
7171

72+
from pandas.io._util import _arrow_dtype_mapping
7273
from pandas.tseries.frequencies import to_offset
7374

7475
if not pa_version_under7p0:
@@ -1729,42 +1730,18 @@ def _replace_with_mask(
17291730

17301731
def _to_masked(self):
17311732
pa_dtype = self._pa_array.type
1732-
na_value = 1
1733-
from pandas.core.arrays import (
1734-
BooleanArray,
1735-
FloatingArray,
1736-
IntegerArray,
1737-
)
1738-
1739-
arr_cls: type[FloatingArray | IntegerArray | BooleanArray]
1740-
if pa.types.is_floating(pa_dtype):
1741-
nbits = pa_dtype.bit_width
1742-
dtype = f"Float{nbits}"
1743-
np_dtype = dtype.lower()
1744-
arr_cls = FloatingArray
1745-
elif pa.types.is_unsigned_integer(pa_dtype):
1746-
nbits = pa_dtype.bit_width
1747-
dtype = f"UInt{nbits}"
1748-
np_dtype = dtype.lower()
1749-
arr_cls = IntegerArray
1750-
1751-
elif pa.types.is_signed_integer(pa_dtype):
1752-
nbits = pa_dtype.bit_width
1753-
dtype = f"Int{nbits}"
1754-
np_dtype = dtype.lower()
1755-
arr_cls = IntegerArray
17561733

1734+
if pa.types.is_floating(pa_dtype) or pa.types.is_integer(pa_dtype):
1735+
na_value = 1
17571736
elif pa.types.is_boolean(pa_dtype):
1758-
dtype = "boolean"
1759-
np_dtype = "bool"
17601737
na_value = True
1761-
arr_cls = BooleanArray
17621738
else:
17631739
raise NotImplementedError
17641740

1741+
dtype = _arrow_dtype_mapping()[pa_dtype]
17651742
mask = self.isna()
1766-
arr = self.to_numpy(dtype=np_dtype, na_value=na_value)
1767-
return arr_cls(arr, mask)
1743+
arr = self.to_numpy(dtype=dtype.numpy_dtype, na_value=na_value)
1744+
return dtype.construct_array_type()(arr, mask)
17681745

17691746
def _groupby_op(
17701747
self,

0 commit comments

Comments
 (0)