Skip to content

Commit 47d71ef

Browse files
committed
use .view(_NS_DTYPE)
1 parent 3d4bc3c commit 47d71ef

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
@@ -611,15 +611,12 @@ def _simple_new(cls, values, name=None, freq=None, tz=None,
611611
dtype=dtype, **kwargs)
612612
values = np.array(values, copy=False)
613613

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

617-
if is_object_dtype(values):
618-
return cls(values, name=name, freq=freq, tz=tz,
619-
dtype=dtype, **kwargs).values
620-
elif not is_datetime64_dtype(values):
621-
values = _ensure_int64(values).view(_NS_DTYPE)
622-
623620
result = object.__new__(cls)
624621
result._data = values
625622
result.name = name
@@ -2094,9 +2091,7 @@ def _generate_regular_range(start, end, periods, freq):
20942091
"if a 'period' is given.")
20952092

20962093
data = np.arange(b, e, stride, dtype=np.int64)
2097-
2098-
# _simple_new is getting an array of int64 here
2099-
data = DatetimeIndex._simple_new(data, None, tz=tz)
2094+
data = DatetimeIndex._simple_new(data.view(_NS_DTYPE), None, tz=tz)
21002095
else:
21012096
if isinstance(start, Timestamp):
21022097
start = start.to_pydatetime()

0 commit comments

Comments
 (0)