Skip to content

Commit 4e2c588

Browse files
authored
TYP and DOC: pd.merge accepts Series (#41594)
1 parent 4bea042 commit 4e2c588

File tree

2 files changed

+19
-15
lines changed

2 files changed

+19
-15
lines changed

pandas/core/frame.py

+2
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,8 @@
260260
_merge_doc = """
261261
Merge DataFrame or named Series objects with a database-style join.
262262
263+
A named Series object is treated as a DataFrame with a single named column.
264+
263265
The join is done on columns or indexes. If joining columns on
264266
columns, the DataFrame indexes *will be ignored*. Otherwise if joining indexes
265267
on indexes or indexes on a column or columns, the index will be passed on.

pandas/core/reshape/merge.py

+17-15
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
ArrayLike,
2828
DtypeObj,
2929
FrameOrSeries,
30-
FrameOrSeriesUnion,
3130
IndexLabel,
3231
Suffixes,
3332
)
@@ -81,15 +80,18 @@
8180
from pandas.core.sorting import is_int64_overflow_possible
8281

8382
if TYPE_CHECKING:
84-
from pandas import DataFrame
83+
from pandas import (
84+
DataFrame,
85+
Series,
86+
)
8587
from pandas.core.arrays import DatetimeArray
8688

8789

88-
@Substitution("\nleft : DataFrame")
90+
@Substitution("\nleft : DataFrame or named Series")
8991
@Appender(_merge_doc, indents=0)
9092
def merge(
91-
left: FrameOrSeriesUnion,
92-
right: FrameOrSeriesUnion,
93+
left: DataFrame | Series,
94+
right: DataFrame | Series,
9395
how: str = "inner",
9496
on: IndexLabel | None = None,
9597
left_on: IndexLabel | None = None,
@@ -322,8 +324,8 @@ def _merger(x, y) -> DataFrame:
322324

323325

324326
def merge_asof(
325-
left: DataFrame,
326-
right: DataFrame,
327+
left: DataFrame | Series,
328+
right: DataFrame | Series,
327329
on: IndexLabel | None = None,
328330
left_on: IndexLabel | None = None,
329331
right_on: IndexLabel | None = None,
@@ -362,8 +364,8 @@ def merge_asof(
362364
363365
Parameters
364366
----------
365-
left : DataFrame
366-
right : DataFrame
367+
left : DataFrame or named Series
368+
right : DataFrame or named Series
367369
on : label
368370
Field name to join on. Must be found in both DataFrames.
369371
The data MUST be ordered. Furthermore this must be a numeric column,
@@ -608,8 +610,8 @@ class _MergeOperation:
608610

609611
def __init__(
610612
self,
611-
left: FrameOrSeriesUnion,
612-
right: FrameOrSeriesUnion,
613+
left: DataFrame | Series,
614+
right: DataFrame | Series,
613615
how: str = "inner",
614616
on: IndexLabel | None = None,
615617
left_on: IndexLabel | None = None,
@@ -1599,8 +1601,8 @@ class _OrderedMerge(_MergeOperation):
15991601

16001602
def __init__(
16011603
self,
1602-
left: DataFrame,
1603-
right: DataFrame,
1604+
left: DataFrame | Series,
1605+
right: DataFrame | Series,
16041606
on: IndexLabel | None = None,
16051607
left_on: IndexLabel | None = None,
16061608
right_on: IndexLabel | None = None,
@@ -1704,8 +1706,8 @@ class _AsOfMerge(_OrderedMerge):
17041706

17051707
def __init__(
17061708
self,
1707-
left: DataFrame,
1708-
right: DataFrame,
1709+
left: DataFrame | Series,
1710+
right: DataFrame | Series,
17091711
on: IndexLabel | None = None,
17101712
left_on: IndexLabel | None = None,
17111713
right_on: IndexLabel | None = None,

0 commit comments

Comments
 (0)