@@ -100,20 +100,25 @@ def test_dataframe_multiindex_columns(self):
100100 self .assert_eq (kdf [('x' , 'a' )], pdf [('x' , 'a' )])
101101 self .assert_eq (kdf [('x' , 'a' , '1' )], pdf [('x' , 'a' , '1' )])
102102
103- def test_dataframe_multiindex_names_level (self ):
104- columns = pd .MultiIndex .from_tuples ([('X' , 'A' ), ('X' , 'B' ), ('Y' , 'C' ), ('Y' , 'D' )],
105- names = ['lvl_1' , 'lvl_2' ])
106- kdf = ks .DataFrame ([[1 , 2 , 3 , 4 ],
107- [5 , 6 , 7 , 8 ],
108- [9 , 10 , 11 , 12 ],
109- [13 , 14 , 15 , 16 ],
110- [17 , 18 , 19 , 20 ]], columns = columns )
103+ def test_dataframe_column_level_name (self ):
104+ column = pd .Index (['A' , 'B' , 'C' ], name = 'X' )
105+ pdf = pd .DataFrame ([[1 , 2 , 3 ], [4 , 5 , 6 ]], columns = column )
106+ kdf = ks .from_pandas (pdf )
111107
108+ self .assert_eq (kdf , pdf )
109+ self .assert_eq (kdf .columns .names , pdf .columns .names )
110+ self .assert_eq (kdf .to_pandas ().columns .names , pdf .columns .names )
111+
112+ def test_dataframe_multiindex_names_level (self ):
113+ columns = pd .MultiIndex .from_tuples ([('X' , 'A' , 'Z' ), ('X' , 'B' , 'Z' ),
114+ ('Y' , 'C' , 'Z' ), ('Y' , 'D' , 'Z' )],
115+ names = ['lvl_1' , 'lvl_2' , 'lv_3' ])
112116 pdf = pd .DataFrame ([[1 , 2 , 3 , 4 ],
113117 [5 , 6 , 7 , 8 ],
114118 [9 , 10 , 11 , 12 ],
115119 [13 , 14 , 15 , 16 ],
116120 [17 , 18 , 19 , 20 ]], columns = columns )
121+ kdf = ks .from_pandas (pdf )
117122
118123 self .assert_eq (kdf .columns .names , pdf .columns .names )
119124 self .assert_eq (kdf .to_pandas ().columns .names , pdf .columns .names )
@@ -125,6 +130,17 @@ def test_dataframe_multiindex_names_level(self):
125130 'be list-like or None for a MultiIndex' ):
126131 ks .DataFrame (kdf1 ._internal .copy (column_index_names = 'level' ))
127132
133+ self .assert_eq (kdf ['X' ], pdf ['X' ])
134+ self .assert_eq (kdf ['X' ].columns .names , pdf ['X' ].columns .names )
135+ self .assert_eq (kdf ['X' ].to_pandas ().columns .names , pdf ['X' ].columns .names )
136+ self .assert_eq (kdf ['X' ]['A' ], pdf ['X' ]['A' ])
137+ self .assert_eq (kdf ['X' ]['A' ].columns .names , pdf ['X' ]['A' ].columns .names )
138+ self .assert_eq (kdf ['X' ]['A' ].to_pandas ().columns .names , pdf ['X' ]['A' ].columns .names )
139+ self .assert_eq (kdf [('X' , 'A' )], pdf [('X' , 'A' )])
140+ self .assert_eq (kdf [('X' , 'A' )].columns .names , pdf [('X' , 'A' )].columns .names )
141+ self .assert_eq (kdf [('X' , 'A' )].to_pandas ().columns .names , pdf [('X' , 'A' )].columns .names )
142+ self .assert_eq (kdf [('X' , 'A' , 'Z' )], pdf [('X' , 'A' , 'Z' )])
143+
128144 def test_reset_index_with_multiindex_columns (self ):
129145 index = pd .MultiIndex .from_tuples ([('bird' , 'falcon' ),
130146 ('bird' , 'parrot' ),
@@ -290,6 +306,13 @@ def test_rename_columns(self):
290306 self .assert_eq (kdf .columns , pd .Index (['x' , 'y' ]))
291307 self .assert_eq (kdf , pdf )
292308
309+ columns = pdf .columns
310+ columns .name = 'lvl_1'
311+
312+ kdf .columns = columns
313+ self .assert_eq (kdf .columns .names , ['lvl_1' ])
314+ self .assert_eq (kdf , pdf )
315+
293316 msg = "Length mismatch: Expected axis has 2 elements, new values have 4 elements"
294317 with self .assertRaisesRegex (ValueError , msg ):
295318 kdf .columns = [1 , 2 , 3 , 4 ]
@@ -300,6 +323,7 @@ def test_rename_columns(self):
300323
301324 columns = pdf .columns
302325 self .assert_eq (kdf .columns , columns )
326+ self .assert_eq (kdf , pdf )
303327
304328 pdf .columns = ['x' , 'y' ]
305329 kdf .columns = ['x' , 'y' ]
@@ -311,6 +335,12 @@ def test_rename_columns(self):
311335 self .assert_eq (kdf .columns , columns )
312336 self .assert_eq (kdf , pdf )
313337
338+ columns .names = ['lvl_1' , 'lvl_2' ]
339+
340+ kdf .columns = columns
341+ self .assert_eq (kdf .columns .names , ['lvl_1' , 'lvl_2' ])
342+ self .assert_eq (kdf , pdf )
343+
314344 def test_dot_in_column_name (self ):
315345 self .assert_eq (
316346 ks .DataFrame (ks .range (1 )._sdf .selectExpr ("1 as `a.b`" ))['a.b' ],
0 commit comments