From 549eb32f378e9622beff526d9da5804c103988cf Mon Sep 17 00:00:00 2001 From: Andrew Hawryluk Date: Wed, 25 May 2022 14:00:49 -0600 Subject: [PATCH 1/2] Reintoduce integer conversion when reading xlsx --- pandas/io/excel/_openpyxl.py | 10 ++++++++-- .../data/excel/ints_spelled_with_decimals.xlsx | Bin 0 -> 4734 bytes pandas/tests/io/excel/test_openpyxl.py | 8 ++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 pandas/tests/io/data/excel/ints_spelled_with_decimals.xlsx diff --git a/pandas/io/excel/_openpyxl.py b/pandas/io/excel/_openpyxl.py index 6d70b3f319f37..26477bab66572 100644 --- a/pandas/io/excel/_openpyxl.py +++ b/pandas/io/excel/_openpyxl.py @@ -583,8 +583,14 @@ def _convert_cell(self, cell, convert_float: bool) -> Scalar: return "" # compat with xlrd elif cell.data_type == TYPE_ERROR: return np.nan - elif not convert_float and cell.data_type == TYPE_NUMERIC: - return float(cell.value) + elif cell.data_type == TYPE_NUMERIC: + # GH5394, GH46988 + if convert_float: + val = int(cell.value) + if val == cell.value: + return val + else: + return float(cell.value) return cell.value diff --git a/pandas/tests/io/data/excel/ints_spelled_with_decimals.xlsx b/pandas/tests/io/data/excel/ints_spelled_with_decimals.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..a667be86283b8a721446657122100460f19f0d7f GIT binary patch literal 4734 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 Date: Wed, 25 May 2022 14:05:34 -0600 Subject: [PATCH 2/2] whats new 1.4.3 --- doc/source/whatsnew/v1.4.3.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/source/whatsnew/v1.4.3.rst b/doc/source/whatsnew/v1.4.3.rst index 415a3ff4efda0..667908d44d41d 100644 --- a/doc/source/whatsnew/v1.4.3.rst +++ b/doc/source/whatsnew/v1.4.3.rst @@ -20,6 +20,7 @@ Fixed regressions - Fixed regression is :meth:`.Styler.to_latex` and :meth:`.Styler.to_html` where ``buf`` failed in combination with ``encoding`` (:issue:`47053`) - Fixed regression in :meth:`.DataFrameGroupBy.agg` when used with list-likes or dict-likes and ``axis=1`` that would give incorrect results; now raises ``NotImplementedError`` (:issue:`46995`) - Fixed regression in :meth:`DataFrame.resample` and :meth:`DataFrame.rolling` when used with list-likes or dict-likes and ``axis=1`` that would raise an unintuitive error message; now raises ``NotImplementedError`` (:issue:`46904`) +- Fixed regression in :func:`read_excel` returning ints as floats on certain input sheets (:issue:`46988`) .. ---------------------------------------------------------------------------