Skip to content

Commit 12c886a

Browse files
authored
BUG: merge cross with Series (#54087)
1 parent ea56ebb commit 12c886a

File tree

2 files changed

+22
-7
lines changed

2 files changed

+22
-7
lines changed

pandas/core/reshape/merge.py

+8-6
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,12 @@ def merge(
145145
indicator: str | bool = False,
146146
validate: str | None = None,
147147
) -> DataFrame:
148+
left_df = _validate_operand(left)
149+
right_df = _validate_operand(right)
148150
if how == "cross":
149151
return _cross_merge(
150-
left,
151-
right,
152+
left_df,
153+
right_df,
152154
on=on,
153155
left_on=left_on,
154156
right_on=right_on,
@@ -162,8 +164,8 @@ def merge(
162164
)
163165
else:
164166
op = _MergeOperation(
165-
left,
166-
right,
167+
left_df,
168+
right_df,
167169
how=how,
168170
on=on,
169171
left_on=left_on,
@@ -179,8 +181,8 @@ def merge(
179181

180182

181183
def _cross_merge(
182-
left: DataFrame | Series,
183-
right: DataFrame | Series,
184+
left: DataFrame,
185+
right: DataFrame,
184186
on: IndexLabel | None = None,
185187
left_on: IndexLabel | None = None,
186188
right_on: IndexLabel | None = None,

pandas/tests/reshape/merge/test_merge_cross.py

+14-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import pytest
22

3-
from pandas import DataFrame
3+
from pandas import (
4+
DataFrame,
5+
Series,
6+
)
47
import pandas._testing as tm
58
from pandas.core.reshape.merge import (
69
MergeError,
@@ -96,3 +99,13 @@ def test_join_cross_error_reporting():
9699
)
97100
with pytest.raises(MergeError, match=msg):
98101
left.join(right, how="cross", on="a")
102+
103+
104+
def test_merge_cross_series():
105+
# GH#54055
106+
ls = Series([1, 2, 3, 4], index=[1, 2, 3, 4], name="left")
107+
rs = Series([3, 4, 5, 6], index=[3, 4, 5, 6], name="right")
108+
res = merge(ls, rs, how="cross")
109+
110+
expected = merge(ls.to_frame(), rs.to_frame(), how="cross")
111+
tm.assert_frame_equal(res, expected)

0 commit comments

Comments
 (0)