@@ -177,6 +177,37 @@ completely analogous way to selecting a column in a regular DataFrame:
177
177
See :ref: `Cross-section with hierarchical index <advanced.xs >` for how to select
178
178
on a deeper level.
179
179
180
+ .. _advanced.set_levels :
181
+
182
+ Set values in levels
183
+ ~~~~~~~~~~~~~~~~~~~~~
184
+
185
+ The method :meth: `~MultiIndex.set_levels ` changes the ``levels `` attribute by
186
+ passing a new value for each index in the level. It is assumed that a new value
187
+ is provided for each code describing values in the level.
188
+ For example:
189
+
190
+ .. ipython :: python
191
+
192
+ df.columns # original MultiIndex columns
193
+
194
+ df.columns.levels # original MultiIndex column levels
195
+
196
+ df.columns.set_levels([1 , 3 , 5 , 7 ], level = 0 )
197
+
198
+ df.columns.set_levels([1 , 3 , 5 , 7 ], level = 0 ).levels
199
+
200
+ If you pass more values than the number of index values in the level,
201
+ ``set_levels `` will still pass the values to the level. The passed values
202
+ are stored in the MultiIndex ``FrozenList `` even though the index values
203
+ may be truncated in the MultiIndex output from ``set_levels ``.
204
+
205
+ .. ipython :: python
206
+
207
+ df.columns.set_levels([1 , 3 , 5 , 7 ], level = 1 )
208
+
209
+ df.columns.set_levels([1 , 3 , 5 , 7 ], level = 1 ).levels
210
+
180
211
.. _advanced.shown_levels :
181
212
182
213
Defined levels
0 commit comments