+15
-14
lines changedFilter options
+15
-14
lines changed Original file line number Diff line number Diff line change
@@ -954,6 +954,7 @@ Conversion
954
954
Strings
955
955
^^^^^^^
956
956
- Bug in :func:`pandas.api.dtypes.is_string_dtype` that would not return ``True`` for :class:`StringDtype` (:issue:`15585`)
957
+
- Bug in converting string dtypes to "datetime64[ns]" or "timedelta64[ns]" incorrectly raising ``TypeError`` (:issue:`36153`)
957
958
-
958
959
959
960
Interval
Original file line number Diff line number Diff line change
@@ -55,9 +55,11 @@
55
55
56
56
from pandas.core.dtypes.cast import maybe_cast_to_extension_array
57
57
from pandas.core.dtypes.common import (
58
+
is_datetime64_dtype,
58
59
is_dtype_equal,
59
60
is_list_like,
60
61
is_scalar,
62
+
is_timedelta64_dtype,
61
63
pandas_dtype,
62
64
)
63
65
from pandas.core.dtypes.dtypes import ExtensionDtype
@@ -580,6 +582,16 @@ def astype(self, dtype: AstypeArg, copy: bool = True) -> ArrayLike:
580
582
cls = dtype.construct_array_type()
581
583
return cls._from_sequence(self, dtype=dtype, copy=copy)
582
584
585
+
elif is_datetime64_dtype(dtype):
586
+
from pandas.core.arrays import DatetimeArray
587
+
588
+
return DatetimeArray._from_sequence(self, dtype=dtype, copy=copy)
589
+
590
+
elif is_timedelta64_dtype(dtype):
591
+
from pandas.core.arrays import TimedeltaArray
592
+
593
+
return TimedeltaArray._from_sequence(self, dtype=dtype, copy=copy)
594
+
583
595
return np.array(self, dtype=dtype, copy=copy)
584
596
585
597
def isna(self) -> np.ndarray | ExtensionArraySupportsAnyAll:
Original file line number Diff line number Diff line change
@@ -73,17 +73,7 @@ def test_setitem_with_scalar_string(dtype):
73
73
tm.assert_extension_array_equal(arr, expected)
74
74
75
75
76
-
def test_astype_roundtrip(dtype, request):
77
-
if dtype.storage == "pyarrow":
78
-
reason = "ValueError: Could not convert object to NumPy datetime"
79
-
mark = pytest.mark.xfail(reason=reason, raises=ValueError)
80
-
request.node.add_marker(mark)
81
-
else:
82
-
mark = pytest.mark.xfail(
83
-
reason="GH#36153 casting from StringArray to dt64 fails", raises=ValueError
84
-
)
85
-
request.node.add_marker(mark)
86
-
76
+
def test_astype_roundtrip(dtype):
87
77
ser = pd.Series(pd.date_range("2000", periods=12))
88
78
ser[0] = None
89
79
Original file line number Diff line number Diff line change
@@ -454,9 +454,7 @@ class TestAstypeString:
454
454
def test_astype_string_to_extension_dtype_roundtrip(
455
455
self, data, dtype, request, nullable_string_dtype
456
456
):
457
-
if dtype == "boolean" or (
458
-
dtype in ("datetime64[ns]", "timedelta64[ns]") and NaT in data
459
-
):
457
+
if dtype == "boolean" or (dtype == "timedelta64[ns]" and NaT in data):
460
458
mark = pytest.mark.xfail(
461
459
reason="TODO StringArray.astype() with missing values #GH40566"
462
460
)
You can’t perform that action at this time.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4