Skip to content

Commit a9a03a2

Browse files
mroeschkejreback
authored andcommitted
BUG: DataFrame.join on tz-aware DatetimeIndex (pandas-dev#25260)
1 parent ea1d5f5 commit a9a03a2

File tree

4 files changed

+24
-3
lines changed

4 files changed

+24
-3
lines changed

doc/source/whatsnew/v0.24.2.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ Bug Fixes
7979
**Reshaping**
8080

8181
-
82-
-
82+
- Bug in :func:`DataFrame.join` when joining on a timezone aware :class:`DatetimeIndex` (:issue:`23931`)
8383
-
8484

8585
**Visualization**

doc/source/whatsnew/v0.25.0.rst

-1
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,6 @@ Reshaping
183183
- Bug in :func:`pandas.merge` adds a string of ``None`` if ``None`` is assigned in suffixes instead of remain the column name as-is (:issue:`24782`).
184184
- Bug in :func:`merge` when merging by index name would sometimes result in an incorrectly numbered index (:issue:`24212`)
185185
- :func:`to_records` now accepts dtypes to its `column_dtypes` parameter (:issue:`24895`)
186-
-
187186

188187

189188
Sparse

pandas/core/reshape/merge.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -909,7 +909,7 @@ def _get_merge_keys(self):
909909
in zip(self.right.index.levels,
910910
self.right.index.codes)]
911911
else:
912-
right_keys = [self.right.index.values]
912+
right_keys = [self.right.index._values]
913913
elif _any(self.right_on):
914914
for k in self.right_on:
915915
if is_rkey(k):

pandas/tests/reshape/merge/test_join.py

+22
Original file line numberDiff line numberDiff line change
@@ -682,6 +682,28 @@ def test_join_multi_to_multi(self, join_type):
682682
with pytest.raises(ValueError, match=msg):
683683
right.join(left, on=['abc', 'xy'], how=join_type)
684684

685+
def test_join_on_tz_aware_datetimeindex(self):
686+
# GH 23931
687+
df1 = pd.DataFrame(
688+
{
689+
'date': pd.date_range(start='2018-01-01', periods=5,
690+
tz='America/Chicago'),
691+
'vals': list('abcde')
692+
}
693+
)
694+
695+
df2 = pd.DataFrame(
696+
{
697+
'date': pd.date_range(start='2018-01-03', periods=5,
698+
tz='America/Chicago'),
699+
'vals_2': list('tuvwx')
700+
}
701+
)
702+
result = df1.join(df2.set_index('date'), on='date')
703+
expected = df1.copy()
704+
expected['vals_2'] = pd.Series([np.nan] * len(expected), dtype=object)
705+
assert_frame_equal(result, expected)
706+
685707

686708
def _check_join(left, right, result, join_col, how='left',
687709
lsuffix='_x', rsuffix='_y'):

0 commit comments

Comments
 (0)