@@ -451,6 +451,20 @@ def test_set_names_unset(self, idx, nm, prop):
451
451
result = set_default_names (data )
452
452
assert getattr (result .index , prop ) == nm
453
453
454
+ @pytest .mark .parametrize ("idx" , [
455
+ pd .Index ([], name = 'index' ),
456
+ pd .MultiIndex .from_arrays ([['foo' ], ['bar' ]],
457
+ names = ('level_0' , 'level_1' )),
458
+ pd .MultiIndex .from_arrays ([['foo' ], ['bar' ]],
459
+ names = ('foo' , 'level_1' ))
460
+ ])
461
+ def test_warns_non_roundtrippable_names (self , idx ):
462
+ # GH 19130
463
+ df = pd .DataFrame ([[]], index = idx )
464
+ df .index .name = 'index'
465
+ with tm .assert_produces_warning ():
466
+ set_default_names (df )
467
+
454
468
def test_timestamp_in_columns (self ):
455
469
df = pd .DataFrame ([[1 , 2 ]], columns = [pd .Timestamp ('2016' ),
456
470
pd .Timedelta (10 , unit = 's' )])
@@ -481,7 +495,8 @@ def test_mi_falsey_name(self):
481
495
class TestTableOrientReader (object ):
482
496
483
497
@pytest .mark .parametrize ("index_nm" , [
484
- None , "idx" , pytest .param ("index" , marks = pytest .mark .xfail )])
498
+ None , "idx" , pytest .param ("index" , marks = pytest .mark .xfail ),
499
+ 'level_0' ])
485
500
@pytest .mark .parametrize ("vals" , [
486
501
{'ints' : [1 , 2 , 3 , 4 ]},
487
502
{'objects' : ['a' , 'b' , 'c' , 'd' ]},
@@ -492,7 +507,7 @@ class TestTableOrientReader(object):
492
507
pytest .param ({'floats' : [1. , 2. , 3. , 4. ]}, marks = pytest .mark .xfail ),
493
508
{'floats' : [1.1 , 2.2 , 3.3 , 4.4 ]},
494
509
{'bools' : [True , False , False , True ]}])
495
- def test_read_json_table_orient (self , index_nm , vals ):
510
+ def test_read_json_table_orient (self , index_nm , vals , recwarn ):
496
511
df = DataFrame (vals , index = pd .Index (range (4 ), name = index_nm ))
497
512
out = df .to_json (orient = "table" )
498
513
result = pd .read_json (out , orient = "table" )
@@ -504,7 +519,7 @@ def test_read_json_table_orient(self, index_nm, vals):
504
519
{'timedeltas' : pd .timedelta_range ('1H' , periods = 4 , freq = 'T' )},
505
520
{'timezones' : pd .date_range ('2016-01-01' , freq = 'd' , periods = 4 ,
506
521
tz = 'US/Central' )}])
507
- def test_read_json_table_orient_raises (self , index_nm , vals ):
522
+ def test_read_json_table_orient_raises (self , index_nm , vals , recwarn ):
508
523
df = DataFrame (vals , index = pd .Index (range (4 ), name = index_nm ))
509
524
out = df .to_json (orient = "table" )
510
525
with tm .assert_raises_regex (NotImplementedError , 'can not yet read ' ):
@@ -530,7 +545,9 @@ def test_comprehensive(self):
530
545
result = pd .read_json (out , orient = "table" )
531
546
tm .assert_frame_equal (df , result )
532
547
533
- @pytest .mark .parametrize ("index_names" , [[None , None ], ['foo' , 'bar' ]])
548
+ @pytest .mark .parametrize ("index_names" , [
549
+ [None , None ], ['foo' , 'bar' ], ['foo' , None ], [None , 'foo' ],
550
+ ['index' , 'foo' ]])
534
551
def test_multiindex (self , index_names ):
535
552
# GH 18912
536
553
df = pd .DataFrame (
0 commit comments