From d0bfbed07727b14dbdf8592b4d9265fce80fc98f Mon Sep 17 00:00:00 2001 From: jordi-crespo Date: Sun, 13 Dec 2020 13:03:00 +0100 Subject: [PATCH] Fixed #38419 - BUG: set_index screws up the dtypes on empty DataFrames --- pandas/tests/frame/methods/test_set_index.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/pandas/tests/frame/methods/test_set_index.py b/pandas/tests/frame/methods/test_set_index.py index aea8caff5936b..ca098296daf8d 100644 --- a/pandas/tests/frame/methods/test_set_index.py +++ b/pandas/tests/frame/methods/test_set_index.py @@ -47,6 +47,17 @@ def test_set_index_empty_column(self): expected.index = MultiIndex.from_arrays([df["a"], df["x"]], names=["a", "x"]) tm.assert_frame_equal(result, expected) + def test_set_index_empty_dataframe(self): + # GH#38419 + df1 = DataFrame( + {"a": Series(dtype="datetime64[ns]"), "b": Series(dtype="int64"), "c": []} + ) + + df2 = df1.set_index(["a", "b"]) + result = df2.index.to_frame().dtypes + expected = df1[["a", "b"]].dtypes + tm.assert_series_equal(result, expected) + def test_set_index_multiindexcolumns(self): columns = MultiIndex.from_tuples([("foo", 1), ("foo", 2), ("bar", 1)]) df = DataFrame(np.random.randn(3, 3), columns=columns)