numpy datetime conversion with DataArray is not working
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 4.2k
- Forks
- 1.4k
- Avg merge
- 2d 15h
- Merged PRs (30d)
- 14
Description
What happened?
I have a simple DataArray with datetime[ns] inside, but when I try to convert this to a supported numpy datetime dtype, the results is still a datetime[ns].
Using the values attribute & converting it, returns the correct results
What did you expect to happen?
I excpected the DataArray to be converted in the correct dtype
Minimal Complete Verifiable Example
>>> time = pd.date_range('2015-01-01 00:00:00', '2015-12-31 23:59:00', inclusive='left', freq='15min')
>>> da = xr.DataArray(time)
>>> da
<xarray.DataArray (dim_0: 35040)>
array(['2015-01-01T00:00:00.000000000', '2015-01-01T00:15:00.000000000',
'2015-01-01T00:30:00.000000000', ..., '2015-12-31T23:15:00.000000000',
'2015-12-31T23:30:00.000000000', '2015-12-31T23:45:00.000000000'],
dtype='datetime64[ns]')
Coordinates:
* dim_0 (dim_0) datetime64[ns] 2015-01-01 ... 2015-12-31T23:45:00
>>> da.astype("datetime64[Y]")
<xarray.DataArray (dim_0: 35040)>
array(['2015-01-01T00:00:00.000000000', '2015-01-01T00:00:00.000000000',
'2015-01-01T00:00:00.000000000', ...,
'2015-01-01T00:00:00.000000000', '2015-01-01T00:00:00.000000000',
'2015-01-01T00:00:00.000000000'], dtype='datetime64[ns]')
Coordinates:
* dim_0 (dim_0) datetime64[ns] 2015-01-01 ... 2015-12-31T23:45:00
>>> da.values.astype("datetime64[Y]")
array(['2015', '2015', '2015', ..., '2015', '2015', '2015'],
dtype='datetime64[Y]')
Relevant log output
No response
Anything else we need to know?
No response
Environment
INSTALLED VERSIONS
commit: None
python: 3.8.10 (default, Nov 26 2021, 20:14:08)
[GCC 9.3.0]
python-bits: 64
OS: Linux
OS-release: 5.13.0-37-generic
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8
LOCALE: ('en_US', 'UTF-8')
libhdf5: 1.12.1
libnetcdf: None
xarray: 0.20.2
pandas: 1.4.1
numpy: 1.22.3
scipy: 1.8.0
netCDF4: None
pydap: None
h5netcdf: None
h5py: 3.6.0
Nio: None
zarr: None
cftime: None
nc_time_axis: None
PseudoNetCDF: None
rasterio: None
cfgrib: None
iris: None
bottleneck: None
dask: 2022.03.0
distributed: 2022.3.0
matplotlib: 3.5.1
cartopy: None
seaborn: None
numbagg: None
fsspec: 2022.02.0
cupy: None
pint: 0.18
sparse: None
setuptools: 60.6.0
pip: 22.0.3
conda: None
pytest: 6.2.5
IPython: 8.1.1
sphinx: None
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the minimal example and compare DataArray.astype("datetime64[Y]") with da.values.astype("datetime64[Y]") using the reported xarray, pandas, and NumPy versions. Trace the DataArray astype behavior and add a regression test demonstrating the expected datetime dtype; the issue is done when the DataArray conversion matches the NumPy conversion.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- numpy, pandas, python
- Domain
- data
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100