Skip to content

Commit c20bb44

Browse files
committed
use .view(_NS_DTYPE)
1 parent 4233f6f commit c20bb44

File tree

2 files changed

+6
-9
lines changed

2 files changed

+6
-9
lines changed

pandas/core/indexes/base.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
is_signed_integer_dtype,
4242
is_unsigned_integer_dtype,
4343
is_integer_dtype, is_float_dtype,
44+
is_datetime64_dtype,
4445
is_datetime64_any_dtype,
4546
is_datetime64tz_dtype,
4647
is_timedelta64_dtype,
@@ -509,6 +510,7 @@ def _shallow_copy(self, values=None, **kwargs):
509510

510511
# _simple_new expects an ndarray
511512
values = getattr(values, 'values', values)
513+
512514
return self._simple_new(values, **attributes)
513515

514516
def _shallow_copy_with_infer(self, values=None, **kwargs):

pandas/core/indexes/datetimes.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -610,15 +610,12 @@ def _simple_new(cls, values, name=None, freq=None, tz=None,
610610
dtype=dtype, **kwargs)
611611
values = np.array(values, copy=False)
612612

613+
if not is_datetime64_dtype(values):
614+
values = _ensure_int64(values).view(_NS_DTYPE)
615+
613616
assert isinstance(values, np.ndarray), "values is not an np.ndarray"
614617
assert is_datetime64_dtype(values)
615618

616-
if is_object_dtype(values):
617-
return cls(values, name=name, freq=freq, tz=tz,
618-
dtype=dtype, **kwargs).values
619-
elif not is_datetime64_dtype(values):
620-
values = _ensure_int64(values).view(_NS_DTYPE)
621-
622619
result = super(DatetimeIndex, cls)._simple_new(values, freq, tz,
623620
**kwargs)
624621
result.name = name
@@ -1862,9 +1859,7 @@ def _generate_regular_range(start, end, periods, freq):
18621859
"if a 'period' is given.")
18631860

18641861
data = np.arange(b, e, stride, dtype=np.int64)
1865-
1866-
# _simple_new is getting an array of int64 here
1867-
data = DatetimeIndex._simple_new(data, None, tz=tz)
1862+
data = DatetimeIndex._simple_new(data.view(_NS_DTYPE), None, tz=tz)
18681863
else:
18691864
if isinstance(start, Timestamp):
18701865
start = start.to_pydatetime()

0 commit comments

Comments
 (0)