@@ -5195,17 +5195,6 @@ def stack(self, level=-1, dropna=True):
51955195
51965196 Examples
51975197 --------
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)
52095198
52105199 **Single level columns**
52115200
@@ -5226,6 +5215,13 @@ def stack(self, level=-1, dropna=True):
52265215 b 3
52275216 dtype: int64
52285217
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+
52295225 Stacking a dataframe with a multi-level column axis:
52305226
52315227 >>> df_multi_level_cols1
@@ -5240,6 +5236,13 @@ def stack(self, level=-1, dropna=True):
52405236 two a 2
52415237 b 3
52425238
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+
52435246 It is common to have missing values when stacking a dataframe
52445247 with multi-level columns, as the stacked dataframe typically
52455248 has more values than the original dataframe. Missing values
@@ -5257,6 +5260,8 @@ def stack(self, level=-1, dropna=True):
52575260 two a 2.0 NaN
52585261 b NaN 3.0
52595262
5263+ **Prescribing the level(s) to be stacked**
5264+
52605265 The first parameter controls which level or levels are stacked:
52615266
52625267 >>> df_multi_level_cols2.stack(0)
@@ -5272,6 +5277,13 @@ def stack(self, level=-1, dropna=True):
52725277 Y b 3.0
52735278 dtype: float64
52745279
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+
52755287 Note that rows where all values are missing are dropped by
52765288 default but this behaviour can be controlled via the dropna
52775289 keyword parameter:
0 commit comments