7
7
import pandas as pd
8
8
9
9
from xarray .coding .times import infer_calendar_name
10
+ from xarray .core import duck_array_ops
10
11
from xarray .core .common import (
11
12
_contains_datetime_like_objects ,
12
13
is_np_datetime_like ,
@@ -50,7 +51,7 @@ def _access_through_cftimeindex(values, name):
50
51
from xarray .coding .cftimeindex import CFTimeIndex
51
52
52
53
if not isinstance (values , CFTimeIndex ):
53
- values_as_cftimeindex = CFTimeIndex (values .ravel ())
54
+ values_as_cftimeindex = CFTimeIndex (duck_array_ops .ravel (values ))
54
55
else :
55
56
values_as_cftimeindex = values
56
57
if name == "season" :
@@ -69,7 +70,7 @@ def _access_through_series(values, name):
69
70
"""Coerce an array of datetime-like values to a pandas Series and
70
71
access requested datetime component
71
72
"""
72
- values_as_series = pd .Series (values .ravel (), copy = False )
73
+ values_as_series = pd .Series (duck_array_ops .ravel (values ), copy = False )
73
74
if name == "season" :
74
75
months = values_as_series .dt .month .values
75
76
field_values = _season_from_months (months )
@@ -148,10 +149,10 @@ def _round_through_series_or_index(values, name, freq):
148
149
from xarray .coding .cftimeindex import CFTimeIndex
149
150
150
151
if is_np_datetime_like (values .dtype ):
151
- values_as_series = pd .Series (values .ravel (), copy = False )
152
+ values_as_series = pd .Series (duck_array_ops .ravel (values ), copy = False )
152
153
method = getattr (values_as_series .dt , name )
153
154
else :
154
- values_as_cftimeindex = CFTimeIndex (values .ravel ())
155
+ values_as_cftimeindex = CFTimeIndex (duck_array_ops .ravel (values ))
155
156
method = getattr (values_as_cftimeindex , name )
156
157
157
158
field_values = method (freq = freq ).values
@@ -195,7 +196,7 @@ def _strftime_through_cftimeindex(values, date_format: str):
195
196
"""
196
197
from xarray .coding .cftimeindex import CFTimeIndex
197
198
198
- values_as_cftimeindex = CFTimeIndex (values .ravel ())
199
+ values_as_cftimeindex = CFTimeIndex (duck_array_ops .ravel (values ))
199
200
200
201
field_values = values_as_cftimeindex .strftime (date_format )
201
202
return field_values .values .reshape (values .shape )
@@ -205,7 +206,7 @@ def _strftime_through_series(values, date_format: str):
205
206
"""Coerce an array of datetime-like values to a pandas Series and
206
207
apply string formatting
207
208
"""
208
- values_as_series = pd .Series (values .ravel (), copy = False )
209
+ values_as_series = pd .Series (duck_array_ops .ravel (values ), copy = False )
209
210
strs = values_as_series .dt .strftime (date_format )
210
211
return strs .values .reshape (values .shape )
211
212
0 commit comments