@@ -49,13 +49,14 @@ def test_set_index_empty_column(self):
49
49
50
50
def test_set_index_empty_dataframe (self ):
51
51
# GH#38419
52
- df = DataFrame (
52
+ df1 = DataFrame (
53
53
{"a" : Series (dtype = "datetime64[ns]" ), "b" : Series (dtype = "int64" ), "c" : []}
54
54
)
55
-
56
- expected = df .set_index (["a" , "b" ])
57
- tm .assert_frame_equal (df .reset_index (drop = True ), expected .reset_index ())
58
- assert df .empty is True
55
+
56
+ df2 = df1 .set_index (['a' , 'b' ])
57
+ result = df2 .index .to_frame ().dtypes
58
+ expected = df1 [['a' , 'b' ]].dtypes
59
+ tm .assert_series_equal (result , expected )
59
60
60
61
def test_set_index_multiindexcolumns (self ):
61
62
columns = MultiIndex .from_tuples ([("foo" , 1 ), ("foo" , 2 ), ("bar" , 1 )])
@@ -153,9 +154,9 @@ def test_set_index_cast(self):
153
154
tm .assert_frame_equal (df , df2 )
154
155
155
156
# A has duplicate values, C does not
156
- @pytest .mark .parametrize ("keys" , ["A" , "C" , ["A" , "B" ], ("tuple" , "as" , "label" )])
157
- @pytest .mark .parametrize ("inplace" , [True , False ])
158
- @pytest .mark .parametrize ("drop" , [True , False ])
157
+ @ pytest .mark .parametrize ("keys" , ["A" , "C" , ["A" , "B" ], ("tuple" , "as" , "label" )])
158
+ @ pytest .mark .parametrize ("inplace" , [True , False ])
159
+ @ pytest .mark .parametrize ("drop" , [True , False ])
159
160
def test_set_index_drop_inplace (self , frame_of_index_cols , drop , inplace , keys ):
160
161
df = frame_of_index_cols
161
162
@@ -176,8 +177,8 @@ def test_set_index_drop_inplace(self, frame_of_index_cols, drop, inplace, keys):
176
177
tm .assert_frame_equal (result , expected )
177
178
178
179
# A has duplicate values, C does not
179
- @pytest .mark .parametrize ("keys" , ["A" , "C" , ["A" , "B" ], ("tuple" , "as" , "label" )])
180
- @pytest .mark .parametrize ("drop" , [True , False ])
180
+ @ pytest .mark .parametrize ("keys" , ["A" , "C" , ["A" , "B" ], ("tuple" , "as" , "label" )])
181
+ @ pytest .mark .parametrize ("drop" , [True , False ])
181
182
def test_set_index_append (self , frame_of_index_cols , drop , keys ):
182
183
df = frame_of_index_cols
183
184
@@ -193,8 +194,8 @@ def test_set_index_append(self, frame_of_index_cols, drop, keys):
193
194
tm .assert_frame_equal (result , expected )
194
195
195
196
# A has duplicate values, C does not
196
- @pytest .mark .parametrize ("keys" , ["A" , "C" , ["A" , "B" ], ("tuple" , "as" , "label" )])
197
- @pytest .mark .parametrize ("drop" , [True , False ])
197
+ @ pytest .mark .parametrize ("keys" , ["A" , "C" , ["A" , "B" ], ("tuple" , "as" , "label" )])
198
+ @ pytest .mark .parametrize ("drop" , [True , False ])
198
199
def test_set_index_append_to_multiindex (self , frame_of_index_cols , drop , keys ):
199
200
# append to existing multiindex
200
201
df = frame_of_index_cols .set_index (["D" ], drop = drop , append = True )
@@ -218,7 +219,7 @@ def test_set_index_after_mutation(self):
218
219
# MultiIndex constructor does not work directly on Series -> lambda
219
220
# Add list-of-list constructor because list is ambiguous -> lambda
220
221
# also test index name if append=True (name is duplicate here for B)
221
- @pytest .mark .parametrize (
222
+ @ pytest .mark .parametrize (
222
223
"box" ,
223
224
[
224
225
Series ,
@@ -229,10 +230,10 @@ def test_set_index_after_mutation(self):
229
230
lambda x : MultiIndex .from_arrays ([x ]),
230
231
],
231
232
)
232
- @pytest .mark .parametrize (
233
+ @ pytest .mark .parametrize (
233
234
"append, index_name" , [(True , None ), (True , "B" ), (True , "test" ), (False , None )]
234
235
)
235
- @pytest .mark .parametrize ("drop" , [True , False ])
236
+ @ pytest .mark .parametrize ("drop" , [True , False ])
236
237
def test_set_index_pass_single_array (
237
238
self , frame_of_index_cols , drop , append , index_name , box
238
239
):
@@ -261,14 +262,14 @@ def test_set_index_pass_single_array(
261
262
262
263
# MultiIndex constructor does not work directly on Series -> lambda
263
264
# also test index name if append=True (name is duplicate here for A & B)
264
- @pytest .mark .parametrize (
265
+ @ pytest .mark .parametrize (
265
266
"box" , [Series , Index , np .array , list , lambda x : MultiIndex .from_arrays ([x ])]
266
267
)
267
- @pytest .mark .parametrize (
268
+ @ pytest .mark .parametrize (
268
269
"append, index_name" ,
269
270
[(True , None ), (True , "A" ), (True , "B" ), (True , "test" ), (False , None )],
270
271
)
271
- @pytest .mark .parametrize ("drop" , [True , False ])
272
+ @ pytest .mark .parametrize ("drop" , [True , False ])
272
273
def test_set_index_pass_arrays (
273
274
self , frame_of_index_cols , drop , append , index_name , box
274
275
):
@@ -292,7 +293,7 @@ def test_set_index_pass_arrays(
292
293
# MultiIndex constructor does not work directly on Series -> lambda
293
294
# We also emulate a "constructor" for the label -> lambda
294
295
# also test index name if append=True (name is duplicate here for A)
295
- @pytest .mark .parametrize (
296
+ @ pytest .mark .parametrize (
296
297
"box2" ,
297
298
[
298
299
Series ,
@@ -304,7 +305,7 @@ def test_set_index_pass_arrays(
304
305
lambda x : x .name ,
305
306
],
306
307
)
307
- @pytest .mark .parametrize (
308
+ @ pytest .mark .parametrize (
308
309
"box1" ,
309
310
[
310
311
Series ,
@@ -316,10 +317,10 @@ def test_set_index_pass_arrays(
316
317
lambda x : x .name ,
317
318
],
318
319
)
319
- @pytest .mark .parametrize (
320
+ @ pytest .mark .parametrize (
320
321
"append, index_name" , [(True , None ), (True , "A" ), (True , "test" ), (False , None )]
321
322
)
322
- @pytest .mark .parametrize ("drop" , [True , False ])
323
+ @ pytest .mark .parametrize ("drop" , [True , False ])
323
324
def test_set_index_pass_arrays_duplicate (
324
325
self , frame_of_index_cols , drop , append , index_name , box1 , box2
325
326
):
@@ -352,8 +353,8 @@ def test_set_index_pass_arrays_duplicate(
352
353
expected = expected .set_index ([keys [1 ]], drop = drop , append = True )
353
354
tm .assert_frame_equal (result , expected )
354
355
355
- @pytest .mark .parametrize ("append" , [True , False ])
356
- @pytest .mark .parametrize ("drop" , [True , False ])
356
+ @ pytest .mark .parametrize ("append" , [True , False ])
357
+ @ pytest .mark .parametrize ("drop" , [True , False ])
357
358
def test_set_index_pass_multiindex (self , frame_of_index_cols , drop , append ):
358
359
df = frame_of_index_cols
359
360
keys = MultiIndex .from_arrays ([df ["A" ], df ["B" ]], names = ["A" , "B" ])
@@ -515,8 +516,8 @@ def test_set_index_verify_integrity(self, frame_of_index_cols):
515
516
with pytest .raises (ValueError , match = "Index has duplicate keys" ):
516
517
df .set_index ([df ["A" ], df ["A" ]], verify_integrity = True )
517
518
518
- @pytest .mark .parametrize ("append" , [True , False ])
519
- @pytest .mark .parametrize ("drop" , [True , False ])
519
+ @ pytest .mark .parametrize ("append" , [True , False ])
520
+ @ pytest .mark .parametrize ("drop" , [True , False ])
520
521
def test_set_index_raise_keys (self , frame_of_index_cols , drop , append ):
521
522
df = frame_of_index_cols
522
523
@@ -537,9 +538,9 @@ def test_set_index_raise_keys(self, frame_of_index_cols, drop, append):
537
538
with pytest .raises (KeyError , match = msg ):
538
539
df .set_index (["A" , df ["A" ], tuple (df ["A" ])], drop = drop , append = append )
539
540
540
- @pytest .mark .parametrize ("append" , [True , False ])
541
- @pytest .mark .parametrize ("drop" , [True , False ])
542
- @pytest .mark .parametrize ("box" , [set ], ids = ["set" ])
541
+ @ pytest .mark .parametrize ("append" , [True , False ])
542
+ @ pytest .mark .parametrize ("drop" , [True , False ])
543
+ @ pytest .mark .parametrize ("box" , [set ], ids = ["set" ])
543
544
def test_set_index_raise_on_type (self , frame_of_index_cols , box , drop , append ):
544
545
df = frame_of_index_cols
545
546
@@ -553,14 +554,14 @@ def test_set_index_raise_on_type(self, frame_of_index_cols, box, drop, append):
553
554
df .set_index (["A" , df ["A" ], box (df ["A" ])], drop = drop , append = append )
554
555
555
556
# MultiIndex constructor does not work directly on Series -> lambda
556
- @pytest .mark .parametrize (
557
+ @ pytest .mark .parametrize (
557
558
"box" ,
558
559
[Series , Index , np .array , iter , lambda x : MultiIndex .from_arrays ([x ])],
559
560
ids = ["Series" , "Index" , "np.array" , "iter" , "MultiIndex" ],
560
561
)
561
- @pytest .mark .parametrize ("length" , [4 , 6 ], ids = ["too_short" , "too_long" ])
562
- @pytest .mark .parametrize ("append" , [True , False ])
563
- @pytest .mark .parametrize ("drop" , [True , False ])
562
+ @ pytest .mark .parametrize ("length" , [4 , 6 ], ids = ["too_short" , "too_long" ])
563
+ @ pytest .mark .parametrize ("append" , [True , False ])
564
+ @ pytest .mark .parametrize ("drop" , [True , False ])
564
565
def test_set_index_raise_on_len (
565
566
self , frame_of_index_cols , box , length , drop , append
566
567
):
0 commit comments