Skip to content

Commit 6c99f92

Browse files
committed
removed if blocks, added test, and added to whats new
1 parent 73da90c commit 6c99f92

File tree

3 files changed

+9
-12
lines changed

3 files changed

+9
-12
lines changed

doc/source/whatsnew/v3.0.0.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -649,6 +649,7 @@ Conversion
649649
- Bug in :meth:`DataFrame.update` bool dtype being converted to object (:issue:`55509`)
650650
- Bug in :meth:`Series.astype` might modify read-only array inplace when casting to a string dtype (:issue:`57212`)
651651
- Bug in :meth:`Series.reindex` not maintaining ``float32`` type when a ``reindex`` introduces a missing value (:issue:`45857`)
652+
- Bug in :meth: 'Series.convert_dtype' strips the timezone on an already Timezone aware pyarrow timestamp dtype (:issue:'60237')
652653

653654
Strings
654655
^^^^^^^

pandas/core/dtypes/dtypes.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2277,18 +2277,6 @@ def name(self) -> str: # type: ignore[override]
22772277
@cache_readonly
22782278
def numpy_dtype(self) -> np.dtype:
22792279
"""Return an instance of the related numpy dtype"""
2280-
if pa.types.is_timestamp(self.pyarrow_dtype):
2281-
# pa.timestamp(unit).to_pandas_dtype() returns ns units
2282-
# regardless of the pyarrow timestamp units.
2283-
# This can be removed if/when pyarrow addresses it:
2284-
# https://github.com/apache/arrow/issues/34462
2285-
return np.dtype(f"datetime64[{self.pyarrow_dtype.unit}]")
2286-
if pa.types.is_duration(self.pyarrow_dtype):
2287-
# pa.duration(unit).to_pandas_dtype() returns ns units
2288-
# regardless of the pyarrow duration units
2289-
# This can be removed if/when pyarrow addresses it:
2290-
# https://github.com/apache/arrow/issues/34462
2291-
return np.dtype(f"timedelta64[{self.pyarrow_dtype.unit}]")
22922280
if pa.types.is_string(self.pyarrow_dtype) or pa.types.is_large_string(
22932281
self.pyarrow_dtype
22942282
):

pandas/tests/frame/methods/test_convert_dtypes.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,3 +196,11 @@ def test_convert_dtypes_from_arrow(self):
196196
result = df.convert_dtypes()
197197
expected = df.astype({"a": "string[python]"})
198198
tm.assert_frame_equal(result, expected)
199+
200+
def test_convert_dtypes_timezone_series(self):
201+
# GH#60237
202+
ser = pd.Series(pd.date_range(start='2020-01-01', periods=5, freq='h', tz='UTC'))
203+
ser = ser.astype("timestamp[ns, tz=UTC][pyarrow]")
204+
expected = ser
205+
result = ser.convert_dtypes(dtype_backend="pyarrow")
206+
tm.assert_series_equal(result, expected)

0 commit comments

Comments
 (0)