diff --git a/pandas/core/arrays/datetimes.py b/pandas/core/arrays/datetimes.py index 741290a4908a5..be2ac8c22bc8a 100644 --- a/pandas/core/arrays/datetimes.py +++ b/pandas/core/arrays/datetimes.py @@ -613,8 +613,8 @@ def _format_native_types(self, na_rep="NaT", date_format=None, **kwargs): fmt = _get_format_datetime64_from_values(self, date_format) return tslib.format_array_from_datetime( - self.asi8, tz=self.tz, format=fmt, na_rep=na_rep - ) + self.asi8.ravel(), tz=self.tz, format=fmt, na_rep=na_rep + ).reshape(self.shape) # ----------------------------------------------------------------- # Comparison Methods diff --git a/pandas/core/internals/blocks.py b/pandas/core/internals/blocks.py index 2cc0bb07bd17f..bd90325114ee1 100644 --- a/pandas/core/internals/blocks.py +++ b/pandas/core/internals/blocks.py @@ -6,7 +6,7 @@ import numpy as np -from pandas._libs import NaT, Timestamp, algos as libalgos, lib, tslib, writers +from pandas._libs import NaT, Timestamp, algos as libalgos, lib, writers import pandas._libs.internals as libinternals from pandas._libs.tslibs import Timedelta, conversion from pandas._libs.tslibs.timezones import tz_compare @@ -2116,21 +2116,13 @@ def _can_hold_element(self, element: Any) -> bool: return is_valid_nat_for_dtype(element, self.dtype) - def to_native_types(self, na_rep=None, date_format=None, quoting=None, **kwargs): - """ convert to our native types format, slicing if desired """ - values = self.values - i8values = self.values.view("i8") - - from pandas.io.formats.format import _get_format_datetime64_from_values - - fmt = _get_format_datetime64_from_values(values, date_format) + def to_native_types(self, na_rep="NaT", date_format=None, **kwargs): + """ convert to our native types format """ + dta = self.array_values() - result = tslib.format_array_from_datetime( - i8values.ravel(), - tz=getattr(self.values, "tz", None), - format=fmt, - na_rep=na_rep, - ).reshape(i8values.shape) + result = dta._format_native_types( + na_rep=na_rep, date_format=date_format, **kwargs + ) return np.atleast_2d(result) def set(self, locs, values): diff --git a/pandas/io/formats/format.py b/pandas/io/formats/format.py index 17cc897136aad..a9e668312d751 100644 --- a/pandas/io/formats/format.py +++ b/pandas/io/formats/format.py @@ -1547,7 +1547,7 @@ def _is_dates_only( values: Union[np.ndarray, DatetimeArray, Index, DatetimeIndex] ) -> bool: # return a boolean if we are only dates (and don't have a timezone) - assert values.ndim == 1 + values = values.ravel() values = DatetimeIndex(values) if values.tz is not None: