From b72906a6c71393a80b2089089b1e46755f07dd64 Mon Sep 17 00:00:00 2001 From: sofiane87 Date: Sat, 2 Nov 2019 10:59:47 +0000 Subject: [PATCH 1/4] TST: Adding DataFrame.to_dict(orient=records) numeric consistency test [Ref #22620] --- pandas/tests/frame/test_convert_to.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pandas/tests/frame/test_convert_to.py b/pandas/tests/frame/test_convert_to.py index 17edd48e36563..78958cd90e2f4 100644 --- a/pandas/tests/frame/test_convert_to.py +++ b/pandas/tests/frame/test_convert_to.py @@ -612,3 +612,11 @@ def test_to_dict_wide(self): result = df.to_dict("records")[0] expected = {"A_{:d}".format(i): i for i in range(256)} assert result == expected + + def test_to_dict_orient_dtype(self): + # https://github.com/pandas-dev/pandas/issues/22620 + input_data = {'a': [1, 2, 3], 'b': [1.0, 2.0, 3.0], 'c': ['X', 'Y', 'Z']} + df = DataFrame(input_data) + result = {col: type(value) for col, value in df.to_dict('records')[0].items()} + expected = {col: type(data[0]) for col, data in input_data.items()} + assert result == expected From 2f26ed25dec2fc137ea0697cf3cedf0519807efc Mon Sep 17 00:00:00 2001 From: sofiane87 Date: Sat, 2 Nov 2019 11:08:03 +0000 Subject: [PATCH 2/4] Pandas black correction --- pandas/tests/frame/test_convert_to.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandas/tests/frame/test_convert_to.py b/pandas/tests/frame/test_convert_to.py index 78958cd90e2f4..972e175b5eb70 100644 --- a/pandas/tests/frame/test_convert_to.py +++ b/pandas/tests/frame/test_convert_to.py @@ -615,8 +615,8 @@ def test_to_dict_wide(self): def test_to_dict_orient_dtype(self): # https://github.com/pandas-dev/pandas/issues/22620 - input_data = {'a': [1, 2, 3], 'b': [1.0, 2.0, 3.0], 'c': ['X', 'Y', 'Z']} + input_data = {"a": [1, 2, 3], "b": [1.0, 2.0, 3.0], "c": ["X", "Y", "Z"]} df = DataFrame(input_data) - result = {col: type(value) for col, value in df.to_dict('records')[0].items()} + result = {col: type(value) for col, value in df.to_dict("records")[0].items()} expected = {col: type(data[0]) for col, data in input_data.items()} assert result == expected From 61f9cd7f32f77d25195932e7cbca163cff0ce5cb Mon Sep 17 00:00:00 2001 From: sofiane87 Date: Sat, 2 Nov 2019 12:40:17 +0000 Subject: [PATCH 3/4] simplifying test --- pandas/tests/frame/test_convert_to.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/pandas/tests/frame/test_convert_to.py b/pandas/tests/frame/test_convert_to.py index 972e175b5eb70..c8584adb2ba43 100644 --- a/pandas/tests/frame/test_convert_to.py +++ b/pandas/tests/frame/test_convert_to.py @@ -615,8 +615,16 @@ def test_to_dict_wide(self): def test_to_dict_orient_dtype(self): # https://github.com/pandas-dev/pandas/issues/22620 + # Input Data input_data = {"a": [1, 2, 3], "b": [1.0, 2.0, 3.0], "c": ["X", "Y", "Z"]} df = DataFrame(input_data) - result = {col: type(value) for col, value in df.to_dict("records")[0].items()} - expected = {col: type(data[0]) for col, data in input_data.items()} + # Expected Dtypes + expected = {"a": int, "b": float, "c": str} + # Extracting dtypes out of to_dict operation + df_dict = df.to_dict("records")[0] + result = { + "a": type(df_dict["a"]), + "b": type(df_dict["b"]), + "c": type(df_dict["c"]), + } assert result == expected From 23d886e80592f3618f9490eee45a1ba25382b6ff Mon Sep 17 00:00:00 2001 From: sofiane87 Date: Sat, 2 Nov 2019 15:18:24 +0000 Subject: [PATCH 4/4] Test: testing all indices --- pandas/tests/frame/test_convert_to.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pandas/tests/frame/test_convert_to.py b/pandas/tests/frame/test_convert_to.py index c8584adb2ba43..e1dda1411edbd 100644 --- a/pandas/tests/frame/test_convert_to.py +++ b/pandas/tests/frame/test_convert_to.py @@ -621,10 +621,10 @@ def test_to_dict_orient_dtype(self): # Expected Dtypes expected = {"a": int, "b": float, "c": str} # Extracting dtypes out of to_dict operation - df_dict = df.to_dict("records")[0] - result = { - "a": type(df_dict["a"]), - "b": type(df_dict["b"]), - "c": type(df_dict["c"]), - } - assert result == expected + for df_dict in df.to_dict("records"): + result = { + "a": type(df_dict["a"]), + "b": type(df_dict["b"]), + "c": type(df_dict["c"]), + } + assert result == expected