diff --git a/pandas/core/tools/datetimes.py b/pandas/core/tools/datetimes.py index 8b37026e16171..0d4a3890471b4 100644 --- a/pandas/core/tools/datetimes.py +++ b/pandas/core/tools/datetimes.py @@ -525,7 +525,15 @@ def _to_datetime_with_unit(arg, unit, name, tz, errors: str) -> Index: arr = arg.astype(f"datetime64[{unit}]") tz_parsed = None else: - arr, tz_parsed = tslib.array_with_unit_to_datetime(arg, unit, errors=errors) + import xarray + if type(arg) is xarray.core.dataarray.DataArray: + val = arg.values + if type(val) == np.ndarray: + arr, tz_parsed = tslib.array_with_unit_to_datetime( + val, unit, errors=errors + ) + else: + arr, tz_parsed = tslib.array_with_unit_to_datetime(arg, unit, errors=errors) if errors == "ignore": # Index constructor _may_ infer to DatetimeIndex diff --git a/pandas/tests/tools/test_to_datetime.py b/pandas/tests/tools/test_to_datetime.py index 850ce6df21b7f..906681855fde9 100644 --- a/pandas/tests/tools/test_to_datetime.py +++ b/pandas/tests/tools/test_to_datetime.py @@ -2650,3 +2650,15 @@ def test_to_datetime_monotonic_increasing_index(cache): result = to_datetime(times.iloc[:, 0], cache=cache) expected = times.iloc[:, 0] tm.assert_series_equal(result, expected) + + +def test_xarray_DataArray(): + #GH44073 + import xarray as xr + arr = xr.DataArray([1, 2, 3]) + res = pd.to_datetime(arr, unit='ns') + ex = DatetimeIndex(['1970-01-01 00:00:00.000000001', + '1970-01-01 00:00:00.000000002', + '1970-01-01 00:00:00.000000003'], + dtype='datetime64[ns]', freq=None) + tm.assert_index_equal(ex, res)