Skip to content

Commit 0883fab

Browse files
committed
BUG: loss of freq in DatetimeIndex constructor, close pandas-dev#1140
1 parent ba17598 commit 0883fab

File tree

3 files changed

+15
-4
lines changed

3 files changed

+15
-4
lines changed

pandas/tests/test_format.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -512,7 +512,7 @@ def test_to_string(self):
512512
cp.name = 'foo'
513513
result = cp.to_string(length=True, name=True)
514514
last_line = result.split('\n')[-1].strip()
515-
self.assertEqual(last_line, "Name: foo, Length: %d" % len(cp))
515+
self.assertEqual(last_line, "Freq: B, Name: foo, Length: %d" % len(cp))
516516

517517
def test_to_string_mixed(self):
518518
s = Series(['foo', np.nan, -1.23, 4.56])

pandas/tseries/index.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -262,9 +262,14 @@ def __new__(cls, data=None,
262262

263263
if issubclass(data.dtype.type, basestring):
264264
subarr = _str_to_dt_array(data)
265-
elif issubclass(data.dtype.type, np.integer):
266-
subarr = np.array(data, dtype='M8[us]', copy=copy)
267265
elif issubclass(data.dtype.type, np.datetime64):
266+
if isinstance(data, DatetimeIndex):
267+
subarr = data.values
268+
offset = data.offset
269+
verify_integrity = False
270+
else:
271+
subarr = np.array(data, dtype='M8[us]', copy=copy)
272+
elif issubclass(data.dtype.type, np.integer):
268273
subarr = np.array(data, dtype='M8[us]', copy=copy)
269274
else:
270275
subarr = np.array(data, dtype='M8[us]', copy=copy)
@@ -800,7 +805,7 @@ def get_value(self, series, key):
800805
raise KeyError(stamp)
801806

802807
def get_loc(self, key):
803-
"""
808+
"""y
804809
Get integer ___location for requested label
805810
806811
Returns

pandas/tseries/tests/test_timeseries.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,12 @@ def test_at_time(self):
495495
assert_series_equal(result, expected)
496496
tm.assert_frame_equal(result_df, exp_df)
497497

498+
def test_dti_constructor_preserve_dti_freq(self):
499+
rng = date_range('1/1/2000', '1/2/2000', freq='5min')
500+
501+
rng2 = DatetimeIndex(rng)
502+
self.assert_(rng.freq == rng2.freq)
503+
498504
def _simple_ts(start, end, freq='D'):
499505
rng = date_range(start, end, freq=freq)
500506
return Series(np.random.randn(len(rng)), index=rng)

0 commit comments

Comments
 (0)