@@ -26,6 +26,17 @@ def null_df():
26
26
return df
27
27
28
28
29
+ @pytest .fixture
30
+ def multiindex_dataframe ():
31
+ data = {
32
+ ('a' , 'b' ): [1 , 2 , 3 ],
33
+ ('Bell__Chart' , 'Normal Distribution' ): [1 , 2 , 3 ],
34
+ ('decorated-elephant' , "r.i.p-rhino :'(" ): [1 , 2 , 3 ],
35
+ }
36
+ df = pd .DataFrame (data )
37
+ return df
38
+
39
+
29
40
def test_clean_names_functional (dataframe ):
30
41
df = clean_names (dataframe )
31
42
expected_columns = ['a' , 'bell_chart' , 'decorated_elephant' ]
@@ -106,3 +117,45 @@ def test_convert_excel_date():
106
117
def test_fill_empty (null_df ):
107
118
df = jn .DataFrame (null_df ).fill_empty (columns = ['2' ], value = 3 )
108
119
assert set (df .loc [:, '2' ]) == set ([3 ])
120
+
121
+
122
+ def test_multiindex_clean_names_functional (multiindex_dataframe ):
123
+ df = clean_names (multiindex_dataframe )
124
+
125
+ levels = [
126
+ ['a' , 'bell_chart' , 'decorated_elephant' ],
127
+ ['b' , 'normal_distribution' , 'r_i_p_rhino_' ]
128
+ ]
129
+
130
+ labels = [[1 , 0 , 2 ], [1 , 0 , 2 ]]
131
+
132
+ expected_columns = pd .MultiIndex (levels = levels , labels = labels )
133
+ assert set (df .columns ) == set (expected_columns )
134
+
135
+
136
+ def test_multiindex_clean_names_method_chain (multiindex_dataframe ):
137
+ df = jn .DataFrame (multiindex_dataframe ).clean_names ()
138
+
139
+ levels = [
140
+ ['a' , 'bell_chart' , 'decorated_elephant' ],
141
+ ['b' , 'normal_distribution' , 'r_i_p_rhino_' ]
142
+ ]
143
+
144
+ labels = [[0 , 1 , 2 ], [0 , 1 , 2 ]]
145
+
146
+ expected_columns = pd .MultiIndex (levels = levels , labels = labels )
147
+ assert set (df .columns ) == set (expected_columns )
148
+
149
+
150
+ def test_multiindex_clean_names_pipe (multiindex_dataframe ):
151
+ df = multiindex_dataframe .pipe (clean_names )
152
+
153
+ levels = [
154
+ ['a' , 'bell_chart' , 'decorated_elephant' ],
155
+ ['b' , 'normal_distribution' , 'r_i_p_rhino_' ]
156
+ ]
157
+
158
+ labels = [[0 , 1 , 2 ], [0 , 1 , 2 ]]
159
+
160
+ expected_columns = pd .MultiIndex (levels = levels , labels = labels )
161
+ assert set (df .columns ) == set (expected_columns )
0 commit comments