@@ -5195,17 +5195,6 @@ def stack(self, level=-1, dropna=True):
5195
5195
5196
5196
Examples
5197
5197
--------
5198
- >>> multicol1 = pd.MultiIndex.from_tuples([('X', 'a'), ('X', 'b')])
5199
- >>> df_multi_level_cols1 = pd.DataFrame([[0, 1], [2, 3]],
5200
- ... index=['one', 'two'],
5201
- ... columns=multicol1)
5202
- >>> multicol2 = pd.MultiIndex.from_tuples([('X', 'a'), ('Y', 'b')])
5203
- >>> df_multi_level_cols2 = pd.DataFrame([[0.0, 1.0], [2.0, 3.0]],
5204
- ... index=['one', 'two'],
5205
- ... columns=multicol2)
5206
- >>> df_multi_level_cols3 = pd.DataFrame([[None, 1.0], [2.0, 3.0]],
5207
- ... index=['one', 'two'],
5208
- ... columns=multicol2)
5209
5198
5210
5199
**Single level columns**
5211
5200
@@ -5226,6 +5215,13 @@ def stack(self, level=-1, dropna=True):
5226
5215
b 3
5227
5216
dtype: int64
5228
5217
5218
+ **Multi level columns: simple case**
5219
+
5220
+ >>> multicol1 = pd.MultiIndex.from_tuples([('X', 'a'), ('X', 'b')])
5221
+ >>> df_multi_level_cols1 = pd.DataFrame([[0, 1], [2, 3]],
5222
+ ... index=['one', 'two'],
5223
+ ... columns=multicol1)
5224
+
5229
5225
Stacking a dataframe with a multi-level column axis:
5230
5226
5231
5227
>>> df_multi_level_cols1
@@ -5240,6 +5236,13 @@ def stack(self, level=-1, dropna=True):
5240
5236
two a 2
5241
5237
b 3
5242
5238
5239
+ **Missing values**
5240
+
5241
+ >>> multicol2 = pd.MultiIndex.from_tuples([('X', 'a'), ('Y', 'b')])
5242
+ >>> df_multi_level_cols2 = pd.DataFrame([[0.0, 1.0], [2.0, 3.0]],
5243
+ ... index=['one', 'two'],
5244
+ ... columns=multicol2)
5245
+
5243
5246
It is common to have missing values when stacking a dataframe
5244
5247
with multi-level columns, as the stacked dataframe typically
5245
5248
has more values than the original dataframe. Missing values
@@ -5257,6 +5260,8 @@ def stack(self, level=-1, dropna=True):
5257
5260
two a 2.0 NaN
5258
5261
b NaN 3.0
5259
5262
5263
+ **Prescribing the level(s) to be stacked**
5264
+
5260
5265
The first parameter controls which level or levels are stacked:
5261
5266
5262
5267
>>> df_multi_level_cols2.stack(0)
@@ -5272,6 +5277,13 @@ def stack(self, level=-1, dropna=True):
5272
5277
Y b 3.0
5273
5278
dtype: float64
5274
5279
5280
+ **Dropping missing values**
5281
+
5282
+ >>> df_multi_level_cols3 = pd.DataFrame([[None, 1.0], [2.0, 3.0]],
5283
+ ... index=['one', 'two'],
5284
+ ... columns=multicol2)
5285
+
5286
+
5275
5287
Note that rows where all values are missing are dropped by
5276
5288
default but this behaviour can be controlled via the dropna
5277
5289
keyword parameter:
0 commit comments