From 5b48988bdbbe6f8be2b24110dab23e04edfaa749 Mon Sep 17 00:00:00 2001 From: oovk Date: Thu, 26 Aug 2021 19:29:10 +0530 Subject: [PATCH 1/6] added example for Dataframe.align --- pandas/core/generic.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/pandas/core/generic.py b/pandas/core/generic.py index 4927f479ba905..a8f601fd7b4ab 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -8476,6 +8476,42 @@ def align( ------- (left, right) : ({klass}, type of other) Aligned objects. + + Examples + -------- + >>> left = pd.DataFrame([[1,2,3,4], [6,7,8,9]], + ... columns=['D', 'B', 'E', 'A'], + ... index=[1,2]) + + >>> right = pd.DataFrame([[10,20,30,40], [60,70,80,90], [600,700,800,900]], + ... columns=['A', 'B', 'C', 'D'], + ... index=[2,3,4]) + + >>> left + D B E A + 1 1 2 3 4 + 2 6 7 8 9 + + >>> right + A B C D + 2 10 20 30 40 + 3 60 70 80 90 + 4 600 700 800 900 + + >>> a1, a2 = left.align(right, + ... join='outer', + ... axis=1) + + >>> a1 + A B C D E + 1 4 2 NaN 1 3 + 2 9 7 NaN 6 8 + + >>> a2 + A B C D E + 2 10 20 30 40 NaN + 3 60 70 80 90 NaN + 4 600 700 800 900 NaN """ method = missing.clean_fill_method(method) From 0f1dd582b20d84c9ad769062413e429421bb1434 Mon Sep 17 00:00:00 2001 From: oovk Date: Sat, 28 Aug 2021 13:34:18 +0530 Subject: [PATCH 2/6] added example for axis=0 param --- pandas/core/generic.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pandas/core/generic.py b/pandas/core/generic.py index 97064dd3a1d03..69dc219218d4c 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -8544,6 +8544,22 @@ def align( 2 10 20 30 40 NaN 3 60 70 80 90 NaN 4 600 700 800 900 NaN + + >>> a1, a2 = df1.align(df2, + ... join='right', + ... axis=0) + + >>> a1 + D B E A + 2 6.0 7.0 8.0 9.0 + 3 NaN NaN NaN NaN + 4 NaN NaN NaN NaN + + >>> a2 + A B C D + 2 10 20 30 40 + 3 60 70 80 90 + 4 600 700 800 900 """ method = missing.clean_fill_method(method) From 8fe967c3f7a1a7ce754a60ff4ae14d286c5a0e89 Mon Sep 17 00:00:00 2001 From: oovk Date: Sat, 28 Aug 2021 19:12:09 +0530 Subject: [PATCH 3/6] changes in align example --- pandas/core/generic.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/pandas/core/generic.py b/pandas/core/generic.py index 69dc219218d4c..5bae58020a017 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -8545,21 +8545,23 @@ def align( 3 60 70 80 90 NaN 4 600 700 800 900 NaN - >>> a1, a2 = df1.align(df2, - ... join='right', + >>> b1, b2 = left.align(right, + ... join='outer', ... axis=0) - >>> a1 + >>> b1 D B E A + 1 1.0 2.0 3.0 4.0 2 6.0 7.0 8.0 9.0 3 NaN NaN NaN NaN 4 NaN NaN NaN NaN - >>> a2 - A B C D - 2 10 20 30 40 - 3 60 70 80 90 - 4 600 700 800 900 + >>> b2 + A B C D + 1 NaN NaN NaN NaN + 2 10.0 20.0 30.0 40.0 + 3 60.0 70.0 80.0 90.0 + 4 600.0 700.0 800.0 900.0 """ method = missing.clean_fill_method(method) From 2c559e84eefccbb8ca10d006828edbd9a0177f0c Mon Sep 17 00:00:00 2001 From: oovk Date: Sat, 28 Aug 2021 19:42:49 +0530 Subject: [PATCH 4/6] passed linting checks --- pandas/core/generic.py | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/pandas/core/generic.py b/pandas/core/generic.py index 5bae58020a017..0e045fbcf6e50 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -8511,13 +8511,15 @@ def align( Examples -------- - >>> left = pd.DataFrame([[1,2,3,4], [6,7,8,9]], - ... columns=['D', 'B', 'E', 'A'], - ... index=[1,2]) + >>> left = pd.DataFrame( + ... [[1, 2, 3, 4], [6, 7, 8, 9]], columns=["D", "B", "E", "A"], index=[1, 2] + ... ) - >>> right = pd.DataFrame([[10,20,30,40], [60,70,80,90], [600,700,800,900]], - ... columns=['A', 'B', 'C', 'D'], - ... index=[2,3,4]) + >>> right = pd.DataFrame( + ... [[10, 20, 30, 40], [60, 70, 80, 90], [600, 700, 800, 900]], + ... columns=["A", "B", "C", "D"], + ... index=[2, 3, 4], + ... ) >>> left D B E A @@ -8530,9 +8532,7 @@ def align( 3 60 70 80 90 4 600 700 800 900 - >>> a1, a2 = left.align(right, - ... join='outer', - ... axis=1) + >>> a1, a2 = left.align(right, join="outer", axis=1) >>> a1 A B C D E @@ -8545,9 +8545,7 @@ def align( 3 60 70 80 90 NaN 4 600 700 800 900 NaN - >>> b1, b2 = left.align(right, - ... join='outer', - ... axis=0) + >>> b1, b2 = left.align(right, join="outer", axis=0) >>> b1 D B E A From 2f0a55b19d8c1d08ea3ffefc23503443989cbbc1 Mon Sep 17 00:00:00 2001 From: oovk Date: Sat, 28 Aug 2021 20:53:33 +0530 Subject: [PATCH 5/6] made requested changes --- pandas/core/generic.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/pandas/core/generic.py b/pandas/core/generic.py index 0e045fbcf6e50..64a4ef540da2b 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -8511,50 +8511,54 @@ def align( Examples -------- - >>> left = pd.DataFrame( + >>> df = pd.DataFrame( ... [[1, 2, 3, 4], [6, 7, 8, 9]], columns=["D", "B", "E", "A"], index=[1, 2] ... ) - >>> right = pd.DataFrame( + >>> other = pd.DataFrame( ... [[10, 20, 30, 40], [60, 70, 80, 90], [600, 700, 800, 900]], ... columns=["A", "B", "C", "D"], ... index=[2, 3, 4], ... ) - >>> left + >>> df D B E A 1 1 2 3 4 2 6 7 8 9 - >>> right + >>> other A B C D 2 10 20 30 40 3 60 70 80 90 4 600 700 800 900 - >>> a1, a2 = left.align(right, join="outer", axis=1) + Align on the column + + >>> left, right = df.align(other, join="outer", axis=1) - >>> a1 + >>> left A B C D E 1 4 2 NaN 1 3 2 9 7 NaN 6 8 - >>> a2 + >>> right A B C D E 2 10 20 30 40 NaN 3 60 70 80 90 NaN 4 600 700 800 900 NaN - >>> b1, b2 = left.align(right, join="outer", axis=0) + We can also align on the index + + >>> left, right = df.align(other, join="outer", axis=0) - >>> b1 + >>> left D B E A 1 1.0 2.0 3.0 4.0 2 6.0 7.0 8.0 9.0 3 NaN NaN NaN NaN 4 NaN NaN NaN NaN - >>> b2 + >>> right A B C D 1 NaN NaN NaN NaN 2 10.0 20.0 30.0 40.0 From 88ae442dc513cf36af5c862c08653f0c79f19986 Mon Sep 17 00:00:00 2001 From: Marco Gorelli Date: Sat, 28 Aug 2021 20:54:17 +0100 Subject: [PATCH 6/6] fixup --- pandas/core/generic.py | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/pandas/core/generic.py b/pandas/core/generic.py index 64a4ef540da2b..1f51576cc6e90 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -8514,56 +8514,65 @@ def align( >>> df = pd.DataFrame( ... [[1, 2, 3, 4], [6, 7, 8, 9]], columns=["D", "B", "E", "A"], index=[1, 2] ... ) - >>> other = pd.DataFrame( ... [[10, 20, 30, 40], [60, 70, 80, 90], [600, 700, 800, 900]], ... columns=["A", "B", "C", "D"], ... index=[2, 3, 4], ... ) - >>> df D B E A 1 1 2 3 4 2 6 7 8 9 - >>> other A B C D 2 10 20 30 40 3 60 70 80 90 4 600 700 800 900 - Align on the column + Align on columns: >>> left, right = df.align(other, join="outer", axis=1) - >>> left A B C D E 1 4 2 NaN 1 3 2 9 7 NaN 6 8 - >>> right A B C D E 2 10 20 30 40 NaN 3 60 70 80 90 NaN 4 600 700 800 900 NaN - We can also align on the index + We can also align on the index: >>> left, right = df.align(other, join="outer", axis=0) - >>> left D B E A 1 1.0 2.0 3.0 4.0 2 6.0 7.0 8.0 9.0 3 NaN NaN NaN NaN 4 NaN NaN NaN NaN - >>> right A B C D 1 NaN NaN NaN NaN 2 10.0 20.0 30.0 40.0 3 60.0 70.0 80.0 90.0 4 600.0 700.0 800.0 900.0 + + Finally, the default `axis=None` will align on both index and columns: + + >>> left, right = df.align(other, join="outer", axis=None) + >>> left + A B C D E + 1 4.0 2.0 NaN 1.0 3.0 + 2 9.0 7.0 NaN 6.0 8.0 + 3 NaN NaN NaN NaN NaN + 4 NaN NaN NaN NaN NaN + >>> right + A B C D E + 1 NaN NaN NaN NaN NaN + 2 10.0 20.0 30.0 40.0 NaN + 3 60.0 70.0 80.0 90.0 NaN + 4 600.0 700.0 800.0 900.0 NaN """ method = missing.clean_fill_method(method)