Skip to content

Commit 3d9cebe

Browse files
committed
Handle datetime64 and timedelta64
1 parent c7056fe commit 3d9cebe

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

pandas/core/arrays/array_.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -225,14 +225,16 @@ def array(data, # type: Sequence[object]
225225
# We choose to return an ndarray, rather than raising.
226226
pass
227227

228-
elif inferred_dtype == 'datetime':
228+
elif inferred_dtype.startswith('datetime'):
229+
# datetime, datetime64
229230
try:
230231
return DatetimeArrayMixin._from_sequence(data, copy=copy)
231232
except ValueError:
232233
# Mixture of timezones, fall back to PandasArray
233234
pass
234235

235-
elif inferred_dtype == 'timedelta':
236+
elif inferred_dtype.startswith('timedelta'):
237+
# timedelta, timedelta64
236238
return TimedeltaArrayMixin._from_sequence(data, copy=copy)
237239

238240
# TODO(BooleanArray): handle this type

pandas/tests/arrays/test_array.py

+13
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,12 @@ def test_array_copy():
110110
([datetime.datetime(2000, 1, 1), datetime.datetime(2001, 1, 1)],
111111
pd.arrays.DatetimeArray._from_sequence(['2000', '2001'])),
112112
113+
(np.array([1, 2], dtype='M8[ns]'),
114+
pd.arrays.DatetimeArray(np.array([1, 2], dtype='M8[ns]'))),
115+
116+
(np.array([1, 2], dtype='M8[us]'),
117+
pd.arrays.DatetimeArray(np.array([1000, 2000], dtype='M8[ns]'))),
118+
113119
# datetimetz
114120
([pd.Timestamp('2000', tz='CET'), pd.Timestamp('2001', tz='CET')],
115121
pd.arrays.DatetimeArray._from_sequence(
@@ -123,6 +129,13 @@ def test_array_copy():
123129
# timedelta
124130
([pd.Timedelta('1H'), pd.Timedelta('2H')],
125131
pd.arrays.TimedeltaArray._from_sequence(['1H', '2H'])),
132+
133+
(np.array([1, 2], dtype='m8[ns]'),
134+
pd.arrays.TimedeltaArray(np.array([1, 2], dtype='m8[ns]'))),
135+
136+
(np.array([1, 2], dtype='m8[us]'),
137+
pd.arrays.TimedeltaArray(np.array([1000, 2000], dtype='m8[ns]'))),
138+
126139
])
127140
def test_array_inference(data, expected):
128141
result = pd.array(data)

0 commit comments

Comments
 (0)