diff --git a/pandas/core/frame.py b/pandas/core/frame.py index 18ee1ad9bcd96..7b564d55a342c 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -260,6 +260,8 @@ _merge_doc = """ Merge DataFrame or named Series objects with a database-style join. +A named Series object is treated as a DataFrame with a single named column. + The join is done on columns or indexes. If joining columns on columns, the DataFrame indexes *will be ignored*. Otherwise if joining indexes on indexes or indexes on a column or columns, the index will be passed on. diff --git a/pandas/core/reshape/merge.py b/pandas/core/reshape/merge.py index 4791bbf0ba7f7..be9eeb64bc35d 100644 --- a/pandas/core/reshape/merge.py +++ b/pandas/core/reshape/merge.py @@ -27,7 +27,6 @@ ArrayLike, DtypeObj, FrameOrSeries, - FrameOrSeriesUnion, IndexLabel, Suffixes, ) @@ -81,15 +80,18 @@ from pandas.core.sorting import is_int64_overflow_possible if TYPE_CHECKING: - from pandas import DataFrame + from pandas import ( + DataFrame, + Series, + ) from pandas.core.arrays import DatetimeArray -@Substitution("\nleft : DataFrame") +@Substitution("\nleft : DataFrame or named Series") @Appender(_merge_doc, indents=0) def merge( - left: FrameOrSeriesUnion, - right: FrameOrSeriesUnion, + left: DataFrame | Series, + right: DataFrame | Series, how: str = "inner", on: IndexLabel | None = None, left_on: IndexLabel | None = None, @@ -322,8 +324,8 @@ def _merger(x, y) -> DataFrame: def merge_asof( - left: DataFrame, - right: DataFrame, + left: DataFrame | Series, + right: DataFrame | Series, on: IndexLabel | None = None, left_on: IndexLabel | None = None, right_on: IndexLabel | None = None, @@ -362,8 +364,8 @@ def merge_asof( Parameters ---------- - left : DataFrame - right : DataFrame + left : DataFrame or named Series + right : DataFrame or named Series on : label Field name to join on. Must be found in both DataFrames. The data MUST be ordered. Furthermore this must be a numeric column, @@ -608,8 +610,8 @@ class _MergeOperation: def __init__( self, - left: FrameOrSeriesUnion, - right: FrameOrSeriesUnion, + left: DataFrame | Series, + right: DataFrame | Series, how: str = "inner", on: IndexLabel | None = None, left_on: IndexLabel | None = None, @@ -1599,8 +1601,8 @@ class _OrderedMerge(_MergeOperation): def __init__( self, - left: DataFrame, - right: DataFrame, + left: DataFrame | Series, + right: DataFrame | Series, on: IndexLabel | None = None, left_on: IndexLabel | None = None, right_on: IndexLabel | None = None, @@ -1704,8 +1706,8 @@ class _AsOfMerge(_OrderedMerge): def __init__( self, - left: DataFrame, - right: DataFrame, + left: DataFrame | Series, + right: DataFrame | Series, on: IndexLabel | None = None, left_on: IndexLabel | None = None, right_on: IndexLabel | None = None,