@@ -146,18 +146,32 @@ def test_setitem_different_dtype(self):
146
146
)
147
147
tm .assert_series_equal (result , expected )
148
148
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
151
152
df = DataFrame (index = ["A" , "B" , "C" ])
152
153
df ["X" ] = df .index
153
154
df ["X" ] = ["x" , "y" , "z" ]
154
155
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" ]
158
157
)
159
158
tm .assert_frame_equal (df , exp )
160
159
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
+
161
175
def test_setitem_dt64_index_empty_columns (self ):
162
176
rng = date_range ("1/1/2000 00:00:00" , "1/1/2000 1:59:50" , freq = "10s" )
163
177
df = DataFrame (index = np .arange (len (rng )))
@@ -171,9 +185,7 @@ def test_setitem_timestamp_empty_columns(self):
171
185
df ["now" ] = Timestamp ("20130101" , tz = "UTC" ).as_unit ("ns" )
172
186
173
187
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" ]
177
189
)
178
190
tm .assert_frame_equal (df , expected )
179
191
@@ -212,7 +224,7 @@ def test_setitem_period_preserves_dtype(self):
212
224
result = DataFrame ([])
213
225
result ["a" ] = data
214
226
215
- expected = DataFrame ({"a" : data }, columns = Index ( ["a" ], dtype = object ) )
227
+ expected = DataFrame ({"a" : data }, columns = ["a" ])
216
228
217
229
tm .assert_frame_equal (result , expected )
218
230
@@ -939,7 +951,7 @@ def test_setitem_scalars_no_index(self):
939
951
# GH#16823 / GH#17894
940
952
df = DataFrame ()
941
953
df ["foo" ] = 1
942
- expected = DataFrame (columns = Index ( ["foo" ], dtype = object ) ).astype (np .int64 )
954
+ expected = DataFrame (columns = ["foo" ]).astype (np .int64 )
943
955
tm .assert_frame_equal (df , expected )
944
956
945
957
def test_setitem_newcol_tuple_key (self , float_frame ):
0 commit comments