Skip to content

Commit

Permalink
[REDO] CLN: core/dtypes/cast.py::maybe_downcast_to_dtype (pandas-dev#…
Browse files Browse the repository at this point in the history
  • Loading branch information
arw2019 authored and Kevin D Smith committed Nov 2, 2020
1 parent caf878d commit 420804f
Showing 1 changed file with 11 additions and 13 deletions.
24 changes: 11 additions & 13 deletions pandas/core/dtypes/cast.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
Routines for casting.
"""

from contextlib import suppress
from datetime import date, datetime, timedelta
from typing import (
TYPE_CHECKING,
Expand Down Expand Up @@ -133,7 +134,7 @@ def is_nested_object(obj) -> bool:
return False


def maybe_downcast_to_dtype(result, dtype: Dtype):
def maybe_downcast_to_dtype(result, dtype: Union[str, np.dtype]):
"""
try to cast to the specified dtype (e.g. convert back to bool/int
or could be an astype of float64->float32
Expand Down Expand Up @@ -169,12 +170,20 @@ def maybe_downcast_to_dtype(result, dtype: Dtype):

dtype = np.dtype(dtype)

elif dtype.type is Period:
from pandas.core.arrays import PeriodArray

with suppress(TypeError):
# e.g. TypeError: int() argument must be a string, a
# bytes-like object or a number, not 'Period
return PeriodArray(result, freq=dtype.freq)

converted = maybe_downcast_numeric(result, dtype, do_round)
if converted is not result:
return converted

# a datetimelike
# GH12821, iNaT is casted to float
# GH12821, iNaT is cast to float
if dtype.kind in ["M", "m"] and result.dtype.kind in ["i", "f"]:
if hasattr(dtype, "tz"):
# not a numpy dtype
Expand All @@ -187,17 +196,6 @@ def maybe_downcast_to_dtype(result, dtype: Dtype):
else:
result = result.astype(dtype)

elif dtype.type is Period:
# TODO(DatetimeArray): merge with previous elif
from pandas.core.arrays import PeriodArray

try:
return PeriodArray(result, freq=dtype.freq)
except TypeError:
# e.g. TypeError: int() argument must be a string, a
# bytes-like object or a number, not 'Period
pass

return result


Expand Down

0 comments on commit 420804f

Please sign in to comment.