From 4ed8afc780afc0f35f4c703f414c198f2e0805f0 Mon Sep 17 00:00:00 2001 From: Irv Lustig Date: Thu, 20 May 2021 17:22:59 -0400 Subject: [PATCH 1/4] merge accepts Series --- pandas/core/reshape/merge.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pandas/core/reshape/merge.py b/pandas/core/reshape/merge.py index 4791bbf0ba7f7..1b886540d248f 100644 --- a/pandas/core/reshape/merge.py +++ b/pandas/core/reshape/merge.py @@ -85,7 +85,7 @@ from pandas.core.arrays import DatetimeArray -@Substitution("\nleft : DataFrame") +@Substitution("\nleft : DataFrame or named Series") @Appender(_merge_doc, indents=0) def merge( left: FrameOrSeriesUnion, @@ -322,8 +322,8 @@ def _merger(x, y) -> DataFrame: def merge_asof( - left: DataFrame, - right: DataFrame, + left: FrameOrSeriesUnion, + right: FrameOrSeriesUnion, on: IndexLabel | None = None, left_on: IndexLabel | None = None, right_on: IndexLabel | None = None, @@ -362,8 +362,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, @@ -1599,8 +1599,8 @@ class _OrderedMerge(_MergeOperation): def __init__( self, - left: DataFrame, - right: DataFrame, + left: FrameOrSeriesUnion, + right: FrameOrSeriesUnion, on: IndexLabel | None = None, left_on: IndexLabel | None = None, right_on: IndexLabel | None = None, @@ -1704,8 +1704,8 @@ class _AsOfMerge(_OrderedMerge): def __init__( self, - left: DataFrame, - right: DataFrame, + left: FrameOrSeriesUnion, + right: FrameOrSeriesUnion, on: IndexLabel | None = None, left_on: IndexLabel | None = None, right_on: IndexLabel | None = None, From aff6e9617a136421cc49370050803a21acd0e72a Mon Sep 17 00:00:00 2001 From: Irv Lustig Date: Fri, 21 May 2021 08:11:03 -0400 Subject: [PATCH 2/4] Use DataFrame | Series --- pandas/core/reshape/merge.py | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/pandas/core/reshape/merge.py b/pandas/core/reshape/merge.py index 1b886540d248f..a42196b1ca439 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,15 @@ 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 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 +321,8 @@ def _merger(x, y) -> DataFrame: def merge_asof( - left: FrameOrSeriesUnion, - right: FrameOrSeriesUnion, + left: DataFrame | Series, + right: DataFrame | Series, on: IndexLabel | None = None, left_on: IndexLabel | None = None, right_on: IndexLabel | None = None, @@ -608,8 +607,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 +1598,8 @@ class _OrderedMerge(_MergeOperation): def __init__( self, - left: FrameOrSeriesUnion, - right: FrameOrSeriesUnion, + left: DataFrame | Series, + right: DataFrame | Series, on: IndexLabel | None = None, left_on: IndexLabel | None = None, right_on: IndexLabel | None = None, @@ -1704,8 +1703,8 @@ class _AsOfMerge(_OrderedMerge): def __init__( self, - left: FrameOrSeriesUnion, - right: FrameOrSeriesUnion, + left: DataFrame | Series, + right: DataFrame | Series, on: IndexLabel | None = None, left_on: IndexLabel | None = None, right_on: IndexLabel | None = None, From e6c677f6c52135302fe07fddd4b97f9f9b6f25ae Mon Sep 17 00:00:00 2001 From: Irv Lustig Date: Fri, 21 May 2021 08:14:06 -0400 Subject: [PATCH 3/4] rerun precommit --- pandas/core/reshape/merge.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pandas/core/reshape/merge.py b/pandas/core/reshape/merge.py index a42196b1ca439..be9eeb64bc35d 100644 --- a/pandas/core/reshape/merge.py +++ b/pandas/core/reshape/merge.py @@ -80,7 +80,10 @@ from pandas.core.sorting import is_int64_overflow_possible if TYPE_CHECKING: - from pandas import DataFrame, Series + from pandas import ( + DataFrame, + Series, + ) from pandas.core.arrays import DatetimeArray From 9b269f408736c24f5df00eb6c15229a8b2b1359e Mon Sep 17 00:00:00 2001 From: Irv Lustig Date: Sun, 23 May 2021 12:32:54 -0400 Subject: [PATCH 4/4] added doc line on merge to classify Series --- pandas/core/frame.py | 2 ++ 1 file changed, 2 insertions(+) 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.