From c8e92d357672cc530218d5a5447c192516121ab3 Mon Sep 17 00:00:00 2001 From: jbrockmendel Date: Mon, 28 Oct 2019 13:57:32 -0700 Subject: [PATCH 1/2] CLN: catch specific exceptions --- pandas/core/frame.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/pandas/core/frame.py b/pandas/core/frame.py index 23611055d6f01..b17dfcf1091d0 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -1664,11 +1664,12 @@ def from_records( else: try: index_data = [arrays[arr_columns.get_loc(field)] for field in index] + except KeyError: + # raised by get_loc + result_index = index + else: result_index = ensure_index_from_sequences(index_data, names=index) - exclude.update(index) - except Exception: - result_index = index if any(exclude): arr_exclude = [x for x in exclude if x in arr_columns] @@ -3623,11 +3624,11 @@ def reindexer(value): # GH 4107 try: value = value.reindex(self.index)._values - except Exception as e: - - # duplicate axis + except ValueError as err: + # raised in MultiIndex.from_tuples, see test_insert_error_msmgs if not value.index.is_unique: - raise e + # duplicate axis + raise err # other raise TypeError( @@ -7794,7 +7795,8 @@ def f(x): # TODO: combine with hasattr(result, 'dtype') further down # hard since we don't have `values` down there. result = np.bool_(result) - except Exception as e: + except TypeError as err: + # e.g. in nanops trying to convert strs to float # try by-column first if filter_type is None and axis == 0: @@ -7824,7 +7826,7 @@ def f(x): raise NotImplementedError( "Handling exception with filter_type {f} not" "implemented.".format(f=filter_type) - ) from e + ) from err with np.errstate(all="ignore"): result = f(data.values) labels = data._get_agg_axis(axis) From eb58fb57dc3e9c6ec7c9219de49e4a40e70428b1 Mon Sep 17 00:00:00 2001 From: jbrockmendel Date: Tue, 29 Oct 2019 08:19:19 -0700 Subject: [PATCH 2/2] Catch TypeError in addition to KeyError --- pandas/core/frame.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandas/core/frame.py b/pandas/core/frame.py index 60f243b3c9145..620e565aa55c8 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -1666,8 +1666,8 @@ def from_records( else: try: index_data = [arrays[arr_columns.get_loc(field)] for field in index] - except KeyError: - # raised by get_loc + except (KeyError, TypeError): + # raised by get_loc, see GH#29258 result_index = index else: result_index = ensure_index_from_sequences(index_data, names=index)