|
69 | 69 | )
|
70 | 70 | from pandas.core.strings.base import BaseStringArrayMethods
|
71 | 71 |
|
| 72 | +from pandas.io._util import _arrow_dtype_mapping |
72 | 73 | from pandas.tseries.frequencies import to_offset
|
73 | 74 |
|
74 | 75 | if not pa_version_under7p0:
|
@@ -1729,42 +1730,18 @@ def _replace_with_mask(
|
1729 | 1730 |
|
1730 | 1731 | def _to_masked(self):
|
1731 | 1732 | 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 |
1756 | 1733 |
|
| 1734 | + if pa.types.is_floating(pa_dtype) or pa.types.is_integer(pa_dtype): |
| 1735 | + na_value = 1 |
1757 | 1736 | elif pa.types.is_boolean(pa_dtype):
|
1758 |
| - dtype = "boolean" |
1759 |
| - np_dtype = "bool" |
1760 | 1737 | na_value = True
|
1761 |
| - arr_cls = BooleanArray |
1762 | 1738 | else:
|
1763 | 1739 | raise NotImplementedError
|
1764 | 1740 |
|
| 1741 | + dtype = _arrow_dtype_mapping()[pa_dtype] |
1765 | 1742 | 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) |
1768 | 1745 |
|
1769 | 1746 | def _groupby_op(
|
1770 | 1747 | self,
|
|
0 commit comments