Skip to content

Commit e51f1cc

Browse files
committed
Test for all join_type values
1 parent 6c1ab7f commit e51f1cc

File tree

2 files changed

+26
-20
lines changed

2 files changed

+26
-20
lines changed

pandas/tests/reshape/merge/test_join.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -727,6 +727,31 @@ def test_panel_join_many(self):
727727
pytest.raises(ValueError, panels[0].join, panels[1:],
728728
how='right')
729729

730+
def test_join_multi_to_multi(self, join_type):
731+
# GH 20475
732+
leftindex = MultiIndex.from_product([list('abc'), list('xy'), [1, 2]],
733+
names=['abc', 'xy', 'num'])
734+
left = DataFrame({'v1': range(12)}, index=leftindex)
735+
736+
rightindex = MultiIndex.from_product([list('abc'), list('xy')],
737+
names=['abc', 'xy'])
738+
right = DataFrame({'v2': [100 * i for i in range(1, 7)]},
739+
index=rightindex)
740+
741+
result = left.join(right, on=['abc', 'xy'], how=join_type)
742+
expected = (left.reset_index()
743+
.merge(right.reset_index(),
744+
on=['abc', 'xy'], how=join_type)
745+
.set_index(['abc', 'xy', 'num'])
746+
)
747+
assert_frame_equal(expected, result)
748+
749+
with pytest.raises(ValueError):
750+
left.join(right, on='xy', how=join_type)
751+
752+
with pytest.raises(ValueError):
753+
right.join(left, on=['abc', 'xy'], how=join_type)
754+
730755

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

pandas/tests/test_join.py

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# -*- coding: utf-8 -*-
22

33
import numpy as np
4-
from pandas import Index, DataFrame, Categorical, merge, MultiIndex
4+
from pandas import Index, DataFrame, Categorical, merge
55

66
from pandas._libs import join as _join
77
import pandas.util.testing as tm
@@ -233,22 +233,3 @@ def test_merge_join_categorical_multiindex():
233233
result = a.join(b, on=['Cat1', 'Int1'])
234234
expected = expected.drop(['Cat', 'Int'], axis=1)
235235
assert_frame_equal(expected, result)
236-
237-
238-
def test_join_multi_to_multi():
239-
leftindex = MultiIndex.from_product([list('abc'), list('xy'), [1, 2]],
240-
names=['abc', 'xy', 'num'])
241-
left = DataFrame({'v1': range(12)}, index=leftindex)
242-
243-
rightindex = MultiIndex.from_product([list('abc'), list('xy')],
244-
names=['abc', 'xy'])
245-
right = DataFrame({'v2': [100 * i for i in range(1, 7)]},
246-
index=rightindex)
247-
248-
result = left.join(right, on=['abc', 'xy'], how='inner')
249-
expected = (left.reset_index()
250-
.merge(right.reset_index(),
251-
on=['abc', 'xy'], how='inner')
252-
.set_index(['abc', 'xy', 'num'])
253-
)
254-
assert_frame_equal(expected, result)

0 commit comments

Comments
 (0)