Skip to content

Commit f34827f

Browse files
committed
use .view(_NS_DTYPE)
1 parent a0e915c commit f34827f

File tree

2 files changed

+6
-9
lines changed

2 files changed

+6
-9
lines changed

pandas/core/indexes/base.py

+2
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

+4-9
Original file line numberDiff line numberDiff line change
@@ -612,15 +612,12 @@ def _simple_new(cls, values, name=None, freq=None, tz=None,
612612
dtype=dtype, **kwargs)
613613
values = np.array(values, copy=False)
614614

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

618-
if is_object_dtype(values):
619-
return cls(values, name=name, freq=freq, tz=tz,
620-
dtype=dtype, **kwargs).values
621-
elif not is_datetime64_dtype(values):
622-
values = _ensure_int64(values).view(_NS_DTYPE)
623-
624621
result = super(DatetimeIndex, cls)._simple_new(values, freq, tz,
625622
**kwargs)
626623
result.name = name
@@ -1918,9 +1915,7 @@ def _generate_regular_range(start, end, periods, freq):
19181915
"if a 'period' is given.")
19191916

19201917
data = np.arange(b, e, stride, dtype=np.int64)
1921-
1922-
# _simple_new is getting an array of int64 here
1923-
data = DatetimeIndex._simple_new(data, None, tz=tz)
1918+
data = DatetimeIndex._simple_new(data.view(_NS_DTYPE), None, tz=tz)
19241919
else:
19251920
if isinstance(start, Timestamp):
19261921
start = start.to_pydatetime()

0 commit comments

Comments
 (0)