Skip to content

Commit f29106d

Browse files
committed
BUG: DatetimeIndex.join tz-aware issue with how='outer'. close #2317
1 parent bb8abd7 commit f29106d

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

RELEASE.rst

+2
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ pandas 0.10.0
5959
- Raise exception on calling reset_index on Series with inplace=True (#2277)
6060
- Enable setting multiple columns in DataFrame with hierarchical columns
6161
(#2295)
62+
- Respect dtype=object in DataFrame constructor (#2291)
63+
- Fix DatetimeIndex.join bug with tz-aware indexes and how='outer' (#2317)
6264

6365
pandas 0.9.1
6466
============

pandas/tseries/index.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -869,7 +869,7 @@ def _wrap_joined_index(self, joined, other):
869869
return joined
870870
else:
871871
tz = getattr(other, 'tz', None)
872-
return DatetimeIndex(joined, name=name, tz=tz)
872+
return self._simple_new(joined, name, tz=tz)
873873

874874
def _can_fast_union(self, other):
875875
if not isinstance(other, DatetimeIndex):

pandas/tseries/tests/test_timezones.py

+15-1
Original file line numberDiff line numberDiff line change
@@ -622,7 +622,7 @@ def test_join_utc_convert(self):
622622
self.assert_(isinstance(result, DatetimeIndex))
623623
self.assert_(result.tz.zone == 'UTC')
624624

625-
def test_join_naive_with_aware(self):
625+
def test_join_aware(self):
626626
rng = date_range('1/1/2011', periods=10, freq='H')
627627
ts = Series(np.random.randn(len(rng)), index=rng)
628628

@@ -631,6 +631,20 @@ def test_join_naive_with_aware(self):
631631
self.assertRaises(Exception, ts.__add__, ts_utc)
632632
self.assertRaises(Exception, ts_utc.__add__, ts)
633633

634+
test1 = DataFrame(np.zeros((6,3)),
635+
index=date_range("2012-11-15 00:00:00", periods=6,
636+
freq="100L", tz="US/Central"))
637+
test2 = DataFrame(np.zeros((3,3)),
638+
index=date_range("2012-11-15 00:00:00", periods=3,
639+
freq="250L", tz="US/Central"),
640+
columns=range(3,6))
641+
642+
result = test1.join(test2, how='outer')
643+
ex_index = test1.index.union(test2.index)
644+
645+
self.assertTrue(result.index.equals(ex_index))
646+
self.assertTrue(result.index.tz.zone == 'US/Central')
647+
634648
def test_align_aware(self):
635649
idx1 = date_range('2001', periods=5, freq='H', tz='US/Eastern')
636650
idx2 = date_range('2001', periods=5, freq='2H', tz='US/Eastern')

0 commit comments

Comments
 (0)