@@ -146,18 +146,32 @@ def test_setitem_different_dtype(self):
146146 )
147147 tm .assert_series_equal (result , expected )
148148
149- def test_setitem_empty_columns (self ):
150- # GH 13522
149+ def test_setitem_overwrite_index (self ):
150+ # GH 13522 - assign the index as a column and then overwrite the values
151+ # -> should not affect the index
151152 df = DataFrame (index = ["A" , "B" , "C" ])
152153 df ["X" ] = df .index
153154 df ["X" ] = ["x" , "y" , "z" ]
154155 exp = DataFrame (
155- data = {"X" : ["x" , "y" , "z" ]},
156- index = ["A" , "B" , "C" ],
157- columns = Index (["X" ], dtype = object ),
156+ data = {"X" : ["x" , "y" , "z" ]}, index = ["A" , "B" , "C" ], columns = ["X" ]
158157 )
159158 tm .assert_frame_equal (df , exp )
160159
160+ def test_setitem_empty_columns (self ):
161+ # Starting from an empty DataFrame and setting a column should result
162+ # in a default string dtype for the columns' Index
163+ # https://github.com/pandas-dev/pandas/issues/60338
164+
165+ df = DataFrame ()
166+ df ["foo" ] = [1 , 2 , 3 ]
167+ expected = DataFrame ({"foo" : [1 , 2 , 3 ]})
168+ tm .assert_frame_equal (df , expected )
169+
170+ df = DataFrame (columns = Index ([]))
171+ df ["foo" ] = [1 , 2 , 3 ]
172+ expected = DataFrame ({"foo" : [1 , 2 , 3 ]})
173+ tm .assert_frame_equal (df , expected )
174+
161175 def test_setitem_dt64_index_empty_columns (self ):
162176 rng = date_range ("1/1/2000 00:00:00" , "1/1/2000 1:59:50" , freq = "10s" )
163177 df = DataFrame (index = np .arange (len (rng )))
@@ -171,9 +185,7 @@ def test_setitem_timestamp_empty_columns(self):
171185 df ["now" ] = Timestamp ("20130101" , tz = "UTC" ).as_unit ("ns" )
172186
173187 expected = DataFrame (
174- [[Timestamp ("20130101" , tz = "UTC" )]] * 3 ,
175- index = range (3 ),
176- columns = Index (["now" ], dtype = object ),
188+ [[Timestamp ("20130101" , tz = "UTC" )]] * 3 , index = range (3 ), columns = ["now" ]
177189 )
178190 tm .assert_frame_equal (df , expected )
179191
@@ -212,7 +224,7 @@ def test_setitem_period_preserves_dtype(self):
212224 result = DataFrame ([])
213225 result ["a" ] = data
214226
215- expected = DataFrame ({"a" : data }, columns = Index ( ["a" ], dtype = object ) )
227+ expected = DataFrame ({"a" : data }, columns = ["a" ])
216228
217229 tm .assert_frame_equal (result , expected )
218230
@@ -939,7 +951,7 @@ def test_setitem_scalars_no_index(self):
939951 # GH#16823 / GH#17894
940952 df = DataFrame ()
941953 df ["foo" ] = 1
942- expected = DataFrame (columns = Index ( ["foo" ], dtype = object ) ).astype (np .int64 )
954+ expected = DataFrame (columns = ["foo" ]).astype (np .int64 )
943955 tm .assert_frame_equal (df , expected )
944956
945957 def test_setitem_newcol_tuple_key (self , float_frame ):
0 commit comments