Skip to content

Commit 687568b

Browse files
committed
Linting, parameterizing test, whatsnew, raising
GH21220
1 parent 2d689ad commit 687568b

File tree

4 files changed

+22
-30
lines changed

4 files changed

+22
-30
lines changed

doc/source/whatsnew/v0.24.0.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ v0.24.0
77

88
New features
99
~~~~~~~~~~~~
10-
- :func: merge now allows a ``DataFrame`` and a ``Series`` with a name as inputs (:issue:`21220`)
10+
- :func:`merge` now directly allows merge between objects of type ``DataFrame`` and ``Series`` with a name, without need to convert the ``Series`` object into a ``DataFrame`` beforehand (:issue:`21220`)
1111

1212
.. _whatsnew_0240.enhancements.other:
1313

pandas/core/reshape/merge.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1645,5 +1645,5 @@ def validate_operand(obj):
16451645
else:
16461646
return obj.to_frame()
16471647
else:
1648-
raise ValueError('Cannot merge a DataFrame or a Series with '
1649-
'instance of type {obj}'.format(obj=type(obj)))
1648+
raise TypeError('Can only merge Series or DataFrame objects, '
1649+
'a {obj} was passed'.format(obj=type(obj)))

pandas/tests/reshape/merge/test_join.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -228,18 +228,19 @@ def test_join_on_fails_with_different_column_counts(self):
228228
index=tm.makeCustomIndex(10, 2))
229229
merge(df, df2, right_on='a', left_on=['a', 'b'])
230230

231-
def test_join_on_fails_with_wrong_object_type(self):
232-
# GH12081
233-
wrongly_typed = [2, 'str', None, np.array([0, 1])]
231+
@pytest.mark.parametrize("wrong_type", [2, 'str', None, np.array([0, 1])])
232+
def test_join_on_fails_with_wrong_object_type(self, wrong_type):
233+
# GH12081 - original issue
234+
234235
# GH21220 - merging of Series and DataFrame is now allowed
235-
# Edited the test to remove the Series object from 'wrongly_typed'
236-
df = DataFrame({'a': [1, 1]})
236+
# Edited the test to remove the Series object from test parameters
237+
# Also, parameterized the original test
237238

238-
for obj in wrongly_typed:
239-
with tm.assert_raises_regex(ValueError, str(type(obj))):
240-
merge(obj, df, left_on='a', right_on='a')
241-
with tm.assert_raises_regex(ValueError, str(type(obj))):
242-
merge(df, obj, left_on='a', right_on='a')
239+
df = DataFrame({'a': [1, 1]})
240+
with tm.assert_raises_regex(ValueError, str(type(wrong_type))):
241+
merge(wrong_type, df, left_on='a', right_on='a')
242+
with tm.assert_raises_regex(ValueError, str(type(wrong_type))):
243+
merge(df, wrong_type, left_on='a', right_on='a')
243244

244245
def test_join_on_pass_vector(self):
245246
expected = self.target.join(self.source, on='C')

pandas/tests/reshape/merge/test_merge.py

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1867,23 +1867,14 @@ def test_merge_index_types(index):
18671867

18681868

18691869
@pytest.mark.parametrize("on,left_on,right_on,left_index,right_index,nms,nm", [
1870-
(['outer', 'inner'], None, None, False, False,
1871-
['outer', 'inner'], 'B'),
1872-
(None, None, None, True, True, ['outer', 'inner'],
1873-
'B'),
1874-
(None, ['outer', 'inner'], None, False, True, None,
1875-
'B'),
1876-
(None, None, ['outer', 'inner'], True, False, None,
1877-
'B'),
1878-
(['outer', 'inner'], None, None, False, False,
1879-
['outer', 'inner'], None),
1880-
(None, None, None, True, True, ['outer', 'inner'],
1881-
None),
1882-
(None, ['outer', 'inner'], None, False, True, None,
1883-
None),
1884-
(None, None, ['outer', 'inner'], True, False, None,
1885-
None),
1886-
])
1870+
(['outer', 'inner'], None, None, False, False, ['outer', 'inner'], 'B'),
1871+
(None, None, None, True, True, ['outer', 'inner'], 'B'),
1872+
(None, ['outer', 'inner'], None, False, True, None, 'B'),
1873+
(None, None, ['outer', 'inner'], True, False, None, 'B'),
1874+
(['outer', 'inner'], None, None, False, False, ['outer', 'inner'], None),
1875+
(None, None, None, True, True, ['outer', 'inner'], None),
1876+
(None, ['outer', 'inner'], None, False, True, None, None),
1877+
(None, None, ['outer', 'inner'], True, False, None, None)])
18871878
def test_merge_series(on, left_on, right_on, left_index, right_index, nms, nm):
18881879
# GH 21220
18891880
a = pd.DataFrame({"A": [1, 2, 3, 4]},

0 commit comments

Comments
 (0)