From 89259dbf74a9fd2e6f9f0879aeb116865a015e09 Mon Sep 17 00:00:00 2001 From: Kiley <> Date: Fri, 19 Mar 2021 15:42:09 -0400 Subject: [PATCH 01/21] if/else changes test --- pandas/core/series.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandas/core/series.py b/pandas/core/series.py index e1a6c6884e003..247aed47a2ffc 100644 --- a/pandas/core/series.py +++ b/pandas/core/series.py @@ -4737,8 +4737,8 @@ def between(self, left, right, inclusive=True) -> Series: dtype: bool """ if inclusive: - lmask = self >= left - rmask = self <= right + lmask = self > left + rmask = self < right else: lmask = self > left rmask = self < right From eda20a1f16da32e0cb95747e877c52bad8722845 Mon Sep 17 00:00:00 2001 From: Kiley <> Date: Sun, 21 Mar 2021 17:41:09 -0400 Subject: [PATCH 02/21] Series.between changes to inclusive boundaries --- pandas/core/series.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/pandas/core/series.py b/pandas/core/series.py index 247aed47a2ffc..3257cd7ab161e 100644 --- a/pandas/core/series.py +++ b/pandas/core/series.py @@ -4670,7 +4670,7 @@ def isin(self, values) -> Series: self, method="isin" ) - def between(self, left, right, inclusive=True) -> Series: + def between(self, left, right, inclusive="True") -> Series: """ Return boolean Series equivalent to left <= series <= right. @@ -4736,12 +4736,21 @@ def between(self, left, right, inclusive=True) -> Series: 3 False dtype: bool """ - if inclusive: - lmask = self > left + + if inclusive == "True" or inclusive == "both": + lmask = self >= left + rmask = self <= right + elif inclusive == "left": + lmask = self >= left rmask = self < right - else: + elif inclusive == "right": + lmask = self > left + rmask = self <= right + elif inclusive == "False" or inclusive == "neither": lmask = self > left rmask = self < right + else: + print("Invalid inclusive input: string input of 'True', 'False' 'left', 'right', 'neither', or 'both' should be submitted") return lmask & rmask From 7af55a72c76b0c2db4a375e2fa8a0ac87556bc77 Mon Sep 17 00:00:00 2001 From: Kiley <> Date: Tue, 23 Mar 2021 20:41:58 -0400 Subject: [PATCH 03/21] changes to date_range parameters --- pandas/core/arrays/datetimelike.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pandas/core/arrays/datetimelike.py b/pandas/core/arrays/datetimelike.py index 633a20d6bed37..21a1a7d9ebf5f 100644 --- a/pandas/core/arrays/datetimelike.py +++ b/pandas/core/arrays/datetimelike.py @@ -1830,13 +1830,16 @@ def validate_endpoints(closed): left_closed = False right_closed = False - if closed is None: + if closed is None or closed == "True": left_closed = True right_closed = True elif closed == "left": left_closed = True elif closed == "right": right_closed = True + elif closed == "both" or closed == "False": + left_closed = False + right_closed = False else: raise ValueError("Closed has to be either 'left', 'right' or None") From 85a33ccfd030a13cc2d3ce4e80d57c1ed179c8ed Mon Sep 17 00:00:00 2001 From: Kiley <> Date: Tue, 23 Mar 2021 21:02:26 -0400 Subject: [PATCH 04/21] Changed series.between error handling to throw value error instead of simple print statement --- pandas/core/series.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandas/core/series.py b/pandas/core/series.py index 3257cd7ab161e..044f269020875 100644 --- a/pandas/core/series.py +++ b/pandas/core/series.py @@ -4746,11 +4746,11 @@ def between(self, left, right, inclusive="True") -> Series: elif inclusive == "right": lmask = self > left rmask = self <= right - elif inclusive == "False" or inclusive == "neither": + elif inclusive == "False": lmask = self > left rmask = self < right else: - print("Invalid inclusive input: string input of 'True', 'False' 'left', 'right', 'neither', or 'both' should be submitted") + raise ValueError("Invalid inclusive input: string input of 'True', 'False' 'left', 'right', or 'both' should be submitted") return lmask & rmask From c87e2409a4823e687e59a71a0d0639219d1ed439 Mon Sep 17 00:00:00 2001 From: Kiley <> Date: Wed, 24 Mar 2021 14:23:25 -0400 Subject: [PATCH 05/21] changes to series.between documentation and error message --- pandas/core/series.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pandas/core/series.py b/pandas/core/series.py index 044f269020875..2a327940e3a6e 100644 --- a/pandas/core/series.py +++ b/pandas/core/series.py @@ -4684,7 +4684,8 @@ def between(self, left, right, inclusive="True") -> Series: Left boundary. right : scalar or list-like Right boundary. - inclusive : bool, default True + inclusive : str, default "True" + Include boundaries. Returns @@ -4750,7 +4751,7 @@ def between(self, left, right, inclusive="True") -> Series: lmask = self > left rmask = self < right else: - raise ValueError("Invalid inclusive input: string input of 'True', 'False' 'left', 'right', or 'both' should be submitted") + raise ValueError("String input of 'True', 'both' 'False' 'left', 'right', should be submitted") return lmask & rmask From 4ebfa59ab611978fc18bf15203811e851c729a04 Mon Sep 17 00:00:00 2001 From: Kiley <> Date: Wed, 24 Mar 2021 23:33:42 -0400 Subject: [PATCH 06/21] parameters as either booleans or strings --- pandas/core/arrays/datetimelike.py | 6 +++--- pandas/core/series.py | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pandas/core/arrays/datetimelike.py b/pandas/core/arrays/datetimelike.py index 21a1a7d9ebf5f..500fb789f183d 100644 --- a/pandas/core/arrays/datetimelike.py +++ b/pandas/core/arrays/datetimelike.py @@ -1830,18 +1830,18 @@ def validate_endpoints(closed): left_closed = False right_closed = False - if closed is None or closed == "True": + if closed is None or closed == True or closed == "neither": left_closed = True right_closed = True elif closed == "left": left_closed = True elif closed == "right": right_closed = True - elif closed == "both" or closed == "False": + elif closed == "both" or closed == False: left_closed = False right_closed = False else: - raise ValueError("Closed has to be either 'left', 'right' or None") + raise ValueError("Closed has to be either 'left', 'right', 'neither', 'both' or None, or a boolean value") return left_closed, right_closed diff --git a/pandas/core/series.py b/pandas/core/series.py index 2a327940e3a6e..b5c18a52287e4 100644 --- a/pandas/core/series.py +++ b/pandas/core/series.py @@ -4670,7 +4670,7 @@ def isin(self, values) -> Series: self, method="isin" ) - def between(self, left, right, inclusive="True") -> Series: + def between(self, left, right, inclusive=True) -> Series: """ Return boolean Series equivalent to left <= series <= right. @@ -4738,7 +4738,7 @@ def between(self, left, right, inclusive="True") -> Series: dtype: bool """ - if inclusive == "True" or inclusive == "both": + if inclusive == True or inclusive == "both": lmask = self >= left rmask = self <= right elif inclusive == "left": @@ -4747,11 +4747,11 @@ def between(self, left, right, inclusive="True") -> Series: elif inclusive == "right": lmask = self > left rmask = self <= right - elif inclusive == "False": + elif inclusive == False or inclusive == "neither": lmask = self > left rmask = self < right else: - raise ValueError("String input of 'True', 'both' 'False' 'left', 'right', should be submitted") + raise ValueError("Input should be boolean or string of 'both', 'left', 'right', or 'neither'") return lmask & rmask From e81e420ec44557e913e8ba6a6d238d50f776e62a Mon Sep 17 00:00:00 2001 From: Matt Marconi Date: Wed, 14 Apr 2021 14:11:12 -0400 Subject: [PATCH 07/21] addition of new examples in indexing.py --- pandas/core/indexing.py | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/pandas/core/indexing.py b/pandas/core/indexing.py index ae0f853db628e..3fc787e042814 100644 --- a/pandas/core/indexing.py +++ b/pandas/core/indexing.py @@ -518,6 +518,7 @@ def loc(self) -> _LocIndexer: sidewinder mark i 10 20 mark ii 1 4 viper mark ii 7 1 + """ return _LocIndexer("loc", self) @@ -615,6 +616,32 @@ def iat(self) -> _iAtIndexer: >>> df.loc[0].iat[1] 2 + + Set value at a partial column + + >>> d = {'a': [1,2,3]} + >>> df = pd.DataFrame(d) + >>> df + a + 0 1 + 1 2 + 2 3 + >>> df['b'] = pd.Series({1: 'y'}) + + Set value of a label missing from the series index + + >>> df + a b + 0 1 NaN + 1 2 y + 2 3 NaN + >>> df['c'] = pd.Series({4: 'E'}) + >>> df + a b c + 0 1 NaN NaN + 1 2 y NaN + 2 3 NaN NaN + """ return _iAtIndexer("iat", self) @@ -2009,7 +2036,7 @@ def _align_series(self, indexer, ser: Series, multiindex_indexer: bool = False): Indexer used to get the locations that will be set to `ser`. ser : pd.Series Values to assign to the locations specified by `indexer`. - multiindex_indexer : boolean, optional + multiindex_indexer : bool, optional Defaults to False. Should be set to True if `indexer` was from a `pd.MultiIndex`, to avoid unnecessary broadcasting. @@ -2248,7 +2275,7 @@ def _convert_key(self, key, is_setter: bool = False): """ Require integer args. (and convert to label arguments) """ - for a, i in zip(self.obj.axes, key): + for i in key: if not is_integer(i): raise ValueError("iAt based indexing can only have integer indexers") return key From fc4afe65a75bdc39065f740fe5d016533a2a32db Mon Sep 17 00:00:00 2001 From: Kiley <> Date: Fri, 16 Apr 2021 12:09:58 -0400 Subject: [PATCH 08/21] Added general example of adding column using series --- pandas/core/indexing.py | 52 +++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/pandas/core/indexing.py b/pandas/core/indexing.py index 3fc787e042814..bcc2adc4aba37 100644 --- a/pandas/core/indexing.py +++ b/pandas/core/indexing.py @@ -443,6 +443,33 @@ def loc(self) -> _LocIndexer: 8 4 5 9 7 8 + **Setting values using series** + + >>> df['shield'] = pd.Series({7: 8, 8: 10, 9: 10}) + >>> df + max_speed shield + 7 1 8 + 8 4 10 + 9 7 10 + + Assign partial column with labels in dataframe missing from series + + >>> df['shield'] = pd.Series({8: 10}) + >>> df + max_speed shield + 7 1 NaN + 8 4 10.0 + 9 7 NaN + + Assign column containing value with missing index + + >>> df['shield'] = pd.Series({10: 14}) + >>> df + max_speed shield + 7 1 NaN + 8 4 NaN + 9 7 NaN + **Getting values with a MultiIndex** A number of examples using a DataFrame with a MultiIndex @@ -617,31 +644,6 @@ def iat(self) -> _iAtIndexer: >>> df.loc[0].iat[1] 2 - Set value at a partial column - - >>> d = {'a': [1,2,3]} - >>> df = pd.DataFrame(d) - >>> df - a - 0 1 - 1 2 - 2 3 - >>> df['b'] = pd.Series({1: 'y'}) - - Set value of a label missing from the series index - - >>> df - a b - 0 1 NaN - 1 2 y - 2 3 NaN - >>> df['c'] = pd.Series({4: 'E'}) - >>> df - a b c - 0 1 NaN NaN - 1 2 y NaN - 2 3 NaN NaN - """ return _iAtIndexer("iat", self) From 14fb6ab9499c709cb9b0dfff7403ef9af4123235 Mon Sep 17 00:00:00 2001 From: Kiley <> Date: Fri, 16 Apr 2021 12:16:50 -0400 Subject: [PATCH 09/21] Made examples specific to .loc[] --- pandas/core/indexing.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/pandas/core/indexing.py b/pandas/core/indexing.py index bcc2adc4aba37..134c53098a954 100644 --- a/pandas/core/indexing.py +++ b/pandas/core/indexing.py @@ -443,18 +443,20 @@ def loc(self) -> _LocIndexer: 8 4 5 9 7 8 - **Setting values using series** + **Setting values using Series** - >>> df['shield'] = pd.Series({7: 8, 8: 10, 9: 10}) + Assign column using Series + + >>> df.loc[:, 'shield'] = pd.Series({7: 8, 8: 10, 9: 13}) >>> df max_speed shield 7 1 8 8 4 10 - 9 7 10 + 9 7 13 - Assign partial column with labels in dataframe missing from series + Assign partial column with labels in dataframe missing from Series - >>> df['shield'] = pd.Series({8: 10}) + >>> df.loc[:, 'shield'] = pd.Series({8: 10}) >>> df max_speed shield 7 1 NaN @@ -463,7 +465,7 @@ def loc(self) -> _LocIndexer: Assign column containing value with missing index - >>> df['shield'] = pd.Series({10: 14}) + >>> df.loc[:, 'shield'] = pd.Series({11: 14}) >>> df max_speed shield 7 1 NaN From fce9b2d5209f5848b25478e870886f8f43deabad Mon Sep 17 00:00:00 2001 From: Kiley <> Date: Fri, 16 Apr 2021 12:43:56 -0400 Subject: [PATCH 10/21] Remove changes made from copied previous files --- pandas/core/arrays/datetimelike.py | 7 ++----- pandas/core/indexing.py | 4 ++-- pandas/core/series.py | 15 +++------------ 3 files changed, 7 insertions(+), 19 deletions(-) diff --git a/pandas/core/arrays/datetimelike.py b/pandas/core/arrays/datetimelike.py index 500fb789f183d..4235518d9cede 100644 --- a/pandas/core/arrays/datetimelike.py +++ b/pandas/core/arrays/datetimelike.py @@ -1830,18 +1830,15 @@ def validate_endpoints(closed): left_closed = False right_closed = False - if closed is None or closed == True or closed == "neither": + if if closed is None: left_closed = True right_closed = True elif closed == "left": left_closed = True elif closed == "right": right_closed = True - elif closed == "both" or closed == False: - left_closed = False - right_closed = False else: - raise ValueError("Closed has to be either 'left', 'right', 'neither', 'both' or None, or a boolean value") + raise ValueError("Closed has to be either 'left', 'right' or None") return left_closed, right_closed diff --git a/pandas/core/indexing.py b/pandas/core/indexing.py index 134c53098a954..5704a916fe9af 100644 --- a/pandas/core/indexing.py +++ b/pandas/core/indexing.py @@ -2040,7 +2040,7 @@ def _align_series(self, indexer, ser: Series, multiindex_indexer: bool = False): Indexer used to get the locations that will be set to `ser`. ser : pd.Series Values to assign to the locations specified by `indexer`. - multiindex_indexer : bool, optional + multiindex_indexer : boolean, optional Defaults to False. Should be set to True if `indexer` was from a `pd.MultiIndex`, to avoid unnecessary broadcasting. @@ -2279,7 +2279,7 @@ def _convert_key(self, key, is_setter: bool = False): """ Require integer args. (and convert to label arguments) """ - for i in key: + for a, i in zip(self.obj.axes, key): if not is_integer(i): raise ValueError("iAt based indexing can only have integer indexers") return key diff --git a/pandas/core/series.py b/pandas/core/series.py index b5c18a52287e4..e74853b3399e5 100644 --- a/pandas/core/series.py +++ b/pandas/core/series.py @@ -4684,7 +4684,7 @@ def between(self, left, right, inclusive=True) -> Series: Left boundary. right : scalar or list-like Right boundary. - inclusive : str, default "True" + inclusive : bool, default True Include boundaries. @@ -4737,21 +4737,12 @@ def between(self, left, right, inclusive=True) -> Series: 3 False dtype: bool """ - - if inclusive == True or inclusive == "both": + if inclusive: lmask = self >= left rmask = self <= right - elif inclusive == "left": - lmask = self >= left - rmask = self < right - elif inclusive == "right": - lmask = self > left - rmask = self <= right - elif inclusive == False or inclusive == "neither": + else: lmask = self > left rmask = self < right - else: - raise ValueError("Input should be boolean or string of 'both', 'left', 'right', or 'neither'") return lmask & rmask From 05277f20c6f650a7c48feb2e5ae6f8f90dc268a3 Mon Sep 17 00:00:00 2001 From: Kiley <> Date: Fri, 16 Apr 2021 12:48:40 -0400 Subject: [PATCH 11/21] Removed minor changes remaining from copied previous files --- pandas/core/arrays/datetimelike.py | 2 +- pandas/core/indexing.py | 2 -- pandas/core/series.py | 1 - 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/pandas/core/arrays/datetimelike.py b/pandas/core/arrays/datetimelike.py index 4235518d9cede..633a20d6bed37 100644 --- a/pandas/core/arrays/datetimelike.py +++ b/pandas/core/arrays/datetimelike.py @@ -1830,7 +1830,7 @@ def validate_endpoints(closed): left_closed = False right_closed = False - if if closed is None: + if closed is None: left_closed = True right_closed = True elif closed == "left": diff --git a/pandas/core/indexing.py b/pandas/core/indexing.py index 5704a916fe9af..a60be0ef19f95 100644 --- a/pandas/core/indexing.py +++ b/pandas/core/indexing.py @@ -547,7 +547,6 @@ def loc(self) -> _LocIndexer: sidewinder mark i 10 20 mark ii 1 4 viper mark ii 7 1 - """ return _LocIndexer("loc", self) @@ -645,7 +644,6 @@ def iat(self) -> _iAtIndexer: >>> df.loc[0].iat[1] 2 - """ return _iAtIndexer("iat", self) diff --git a/pandas/core/series.py b/pandas/core/series.py index e74853b3399e5..e1a6c6884e003 100644 --- a/pandas/core/series.py +++ b/pandas/core/series.py @@ -4685,7 +4685,6 @@ def between(self, left, right, inclusive=True) -> Series: right : scalar or list-like Right boundary. inclusive : bool, default True - Include boundaries. Returns From ca03c5c290d0444c7a33c47065ecd78d59f821b9 Mon Sep 17 00:00:00 2001 From: Kiley <> Date: Sun, 18 Apr 2021 14:07:15 -0400 Subject: [PATCH 12/21] Wording about Series being aligned to dataframe in partial column example --- pandas/core/indexing.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pandas/core/indexing.py b/pandas/core/indexing.py index a60be0ef19f95..0028e59bf46e5 100644 --- a/pandas/core/indexing.py +++ b/pandas/core/indexing.py @@ -454,7 +454,8 @@ def loc(self) -> _LocIndexer: 8 4 10 9 7 13 - Assign partial column with labels in dataframe missing from Series + Assign partial column with certain aligned indexes in dataframe + missing from Series >>> df.loc[:, 'shield'] = pd.Series({8: 10}) >>> df From b9a515e1b08ccb326561f97e6ffc49ea192e92e2 Mon Sep 17 00:00:00 2001 From: Kiley <> Date: Sat, 24 Apr 2021 13:29:30 -0400 Subject: [PATCH 13/21] Information about series alignment to index of DataFrame --- pandas/core/indexing.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandas/core/indexing.py b/pandas/core/indexing.py index 0028e59bf46e5..f0621dec6e99b 100644 --- a/pandas/core/indexing.py +++ b/pandas/core/indexing.py @@ -454,8 +454,8 @@ def loc(self) -> _LocIndexer: 8 4 10 9 7 13 - Assign partial column with certain aligned indexes in dataframe - missing from Series + Assigning column to a Series with non matching indexes aligns the + right hand side to the index of the left >>> df.loc[:, 'shield'] = pd.Series({8: 10}) >>> df From 95f867301d075a29bc077e0640aba196b0a3366e Mon Sep 17 00:00:00 2001 From: Kiley <> Date: Sat, 24 Apr 2021 13:37:33 -0400 Subject: [PATCH 14/21] Warning about using df.loc to assign a column --- pandas/core/indexing.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pandas/core/indexing.py b/pandas/core/indexing.py index f0621dec6e99b..14ad7d937539e 100644 --- a/pandas/core/indexing.py +++ b/pandas/core/indexing.py @@ -446,6 +446,7 @@ def loc(self) -> _LocIndexer: **Setting values using Series** Assign column using Series + warning:: Preferred syntax to assign a column: `df['shield'] = ....` >>> df.loc[:, 'shield'] = pd.Series({7: 8, 8: 10, 9: 13}) >>> df From fccfad8978ad8ef2bc503dfc23fddf94b4ee606a Mon Sep 17 00:00:00 2001 From: Kiley <> Date: Mon, 3 May 2021 13:59:07 -0400 Subject: [PATCH 15/21] Reword warning --- pandas/core/indexing.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pandas/core/indexing.py b/pandas/core/indexing.py index 14ad7d937539e..fdc6159c7d037 100644 --- a/pandas/core/indexing.py +++ b/pandas/core/indexing.py @@ -446,7 +446,8 @@ def loc(self) -> _LocIndexer: **Setting values using Series** Assign column using Series - warning:: Preferred syntax to assign a column: `df['shield'] = ....` + warning:: Preferred syntax to assign a column: `df['shield']` instead + of allocation through `df.loc[]` >>> df.loc[:, 'shield'] = pd.Series({7: 8, 8: 10, 9: 13}) >>> df From 855c48e3ac7b9812e8fc85a2f50830d6fd369ee3 Mon Sep 17 00:00:00 2001 From: Kiley <> Date: Mon, 3 May 2021 15:00:11 -0400 Subject: [PATCH 16/21] Rollback to commit with passing tests --- pandas/core/indexing.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/pandas/core/indexing.py b/pandas/core/indexing.py index fdc6159c7d037..0028e59bf46e5 100644 --- a/pandas/core/indexing.py +++ b/pandas/core/indexing.py @@ -446,8 +446,6 @@ def loc(self) -> _LocIndexer: **Setting values using Series** Assign column using Series - warning:: Preferred syntax to assign a column: `df['shield']` instead - of allocation through `df.loc[]` >>> df.loc[:, 'shield'] = pd.Series({7: 8, 8: 10, 9: 13}) >>> df @@ -456,8 +454,8 @@ def loc(self) -> _LocIndexer: 8 4 10 9 7 13 - Assigning column to a Series with non matching indexes aligns the - right hand side to the index of the left + Assign partial column with certain aligned indexes in dataframe + missing from Series >>> df.loc[:, 'shield'] = pd.Series({8: 10}) >>> df From 898a524f5e69bbbba31ab5dd668e2637b458ad92 Mon Sep 17 00:00:00 2001 From: Kiley <> Date: Mon, 3 May 2021 17:41:36 -0400 Subject: [PATCH 17/21] More detailed information about series alignment --- pandas/core/indexing.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandas/core/indexing.py b/pandas/core/indexing.py index 0028e59bf46e5..f0621dec6e99b 100644 --- a/pandas/core/indexing.py +++ b/pandas/core/indexing.py @@ -454,8 +454,8 @@ def loc(self) -> _LocIndexer: 8 4 10 9 7 13 - Assign partial column with certain aligned indexes in dataframe - missing from Series + Assigning column to a Series with non matching indexes aligns the + right hand side to the index of the left >>> df.loc[:, 'shield'] = pd.Series({8: 10}) >>> df From 72aea9dcc5c921d7a6a095bf6f7644c1382f3615 Mon Sep 17 00:00:00 2001 From: Kiley <> Date: Tue, 4 May 2021 12:53:54 -0400 Subject: [PATCH 18/21] Warning on using df.loc[:, 'shield'] to assign a column --- pandas/core/indexing.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pandas/core/indexing.py b/pandas/core/indexing.py index f0621dec6e99b..2580f28848fd7 100644 --- a/pandas/core/indexing.py +++ b/pandas/core/indexing.py @@ -447,6 +447,8 @@ def loc(self) -> _LocIndexer: Assign column using Series + warning:: Preferred syntax to assign a column: `df['shield'] = ....` + >>> df.loc[:, 'shield'] = pd.Series({7: 8, 8: 10, 9: 13}) >>> df max_speed shield From 6a928ed2f16130c1393fb03cc7af52ec0ac0a558 Mon Sep 17 00:00:00 2001 From: Kiley <> Date: Tue, 4 May 2021 20:08:53 -0400 Subject: [PATCH 19/21] New format of warning --- pandas/core/indexing.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pandas/core/indexing.py b/pandas/core/indexing.py index 2580f28848fd7..b8210c97fb64d 100644 --- a/pandas/core/indexing.py +++ b/pandas/core/indexing.py @@ -447,7 +447,9 @@ def loc(self) -> _LocIndexer: Assign column using Series - warning:: Preferred syntax to assign a column: `df['shield'] = ....` + .. warning:: + Preferred syntax to assign a column: `df['shield']` instead + of allocation through `df.loc[]` >>> df.loc[:, 'shield'] = pd.Series({7: 8, 8: 10, 9: 13}) >>> df From 6441a52e3ce39bbe4c95e86ac851f8089e20ec62 Mon Sep 17 00:00:00 2001 From: Kiley Hewitt <42876297+hewittk@users.noreply.github.com> Date: Wed, 9 Jun 2021 14:16:27 -0600 Subject: [PATCH 20/21] Move warning to loc method head and higher example --- pandas/core/indexing.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pandas/core/indexing.py b/pandas/core/indexing.py index 35f0dffdc4ddb..8142c794f83b3 100644 --- a/pandas/core/indexing.py +++ b/pandas/core/indexing.py @@ -287,6 +287,10 @@ def loc(self) -> _LocIndexer: - An alignable boolean Series. The index of the key will be aligned before masking. - An alignable Index. The Index of the returned selection will be the input. + + .. warning:: Preferred syntax to assign a column: `df[]` instead of + allocation through `df.loc[]` + - A ``callable`` function with one argument (the calling Series or DataFrame) and that returns valid output for indexing (one of the above) @@ -387,6 +391,9 @@ def loc(self) -> _LocIndexer: sidewinder 7 8 **Setting values** + + .. warning:: Preferred syntax to assign a column: `df['shield']` + instead of allocation through `df.loc[]` such as `df.loc['shield']` Set value for all items matching the list of labels @@ -449,10 +456,6 @@ def loc(self) -> _LocIndexer: Assign column using Series - .. warning:: - Preferred syntax to assign a column: `df['shield']` instead - of allocation through `df.loc[]` - >>> df.loc[:, 'shield'] = pd.Series({7: 8, 8: 10, 9: 13}) >>> df max_speed shield From 669a6b3b12b8781fb50a248b9d840545267816b4 Mon Sep 17 00:00:00 2001 From: Kiley Hewitt <42876297+hewittk@users.noreply.github.com> Date: Wed, 9 Jun 2021 15:13:57 -0600 Subject: [PATCH 21/21] Fix pep8 issues --- pandas/core/indexing.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pandas/core/indexing.py b/pandas/core/indexing.py index 8142c794f83b3..cf7f337799be7 100644 --- a/pandas/core/indexing.py +++ b/pandas/core/indexing.py @@ -287,10 +287,10 @@ def loc(self) -> _LocIndexer: - An alignable boolean Series. The index of the key will be aligned before masking. - An alignable Index. The Index of the returned selection will be the input. - + .. warning:: Preferred syntax to assign a column: `df[]` instead of - allocation through `df.loc[]` - + allocation through `df.loc[]` + - A ``callable`` function with one argument (the calling Series or DataFrame) and that returns valid output for indexing (one of the above) @@ -391,9 +391,9 @@ def loc(self) -> _LocIndexer: sidewinder 7 8 **Setting values** - + .. warning:: Preferred syntax to assign a column: `df['shield']` - instead of allocation through `df.loc[]` such as `df.loc['shield']` + instead of allocation through `df.loc[]` such as `df.loc['shield']` Set value for all items matching the list of labels