Skip to content

Commit 695b1ac

Browse files
datapythonistaalanbato
authored andcommitted
DOC: Improving docstring of reset_index method (pandas-dev#16416) (pandas-dev#16975)
1 parent e4b931c commit 695b1ac

File tree

1 file changed

+91
-28
lines changed

1 file changed

+91
-28
lines changed

pandas/core/frame.py

+91-28
Original file line numberDiff line numberDiff line change
@@ -3023,35 +3023,98 @@ def reset_index(self, level=None, drop=False, inplace=False, col_level=0,
30233023
30243024
Examples
30253025
--------
3026-
>>> df = pd.DataFrame({'a': [1, 2, 3, 4], 'b': [5, 6, 7, 8]},
3027-
... index=pd.Index(['a', 'b', 'c', 'd'],
3028-
... name='idx'))
3026+
>>> df = pd.DataFrame([('bird', 389.0),
3027+
... ('bird', 24.0),
3028+
... ('mammal', 80.5),
3029+
... ('mammal', np.nan)],
3030+
... index=['falcon', 'parrot', 'lion', 'monkey'],
3031+
... columns=('class', 'max_speed'))
3032+
>>> df
3033+
class max_speed
3034+
falcon bird 389.0
3035+
parrot bird 24.0
3036+
lion mammal 80.5
3037+
monkey mammal NaN
3038+
3039+
When we reset the index, the old index is added as a column, and a
3040+
new sequential index is used:
3041+
30293042
>>> df.reset_index()
3030-
idx a b
3031-
0 a 1 5
3032-
1 b 2 6
3033-
2 c 3 7
3034-
3 d 4 8
3035-
3036-
>>> arrays = [np.array(['bar', 'bar', 'baz', 'baz', 'foo',
3037-
... 'foo', 'qux', 'qux']),
3038-
... np.array(['one', 'two', 'one', 'two', 'one', 'two',
3039-
... 'one', 'two'])]
3040-
>>> df2 = pd.DataFrame(
3041-
... np.random.randn(8, 4),
3042-
... index=pd.MultiIndex.from_arrays(arrays,
3043-
... names=['a', 'b']))
3044-
>>> df2.reset_index(level='a')
3045-
a 0 1 2 3
3046-
b
3047-
one bar -1.099413 0.291838 0.598198 0.162181
3048-
two bar -0.312184 -0.119904 0.250360 0.364378
3049-
one baz 0.713596 -0.490636 0.074967 -0.297857
3050-
two baz 0.998397 0.524499 -2.228976 0.901155
3051-
one foo 0.923204 0.920695 1.264488 1.476921
3052-
two foo -1.566922 0.783278 -0.073656 0.266027
3053-
one qux -0.230470 0.109800 -1.383409 0.048421
3054-
two qux -0.865993 -0.865984 0.705367 -0.170446
3043+
index class max_speed
3044+
0 falcon bird 389.0
3045+
1 parrot bird 24.0
3046+
2 lion mammal 80.5
3047+
3 monkey mammal NaN
3048+
3049+
We can use the `drop` parameter to avoid the old index being added as
3050+
a column:
3051+
3052+
>>> df.reset_index(drop=True)
3053+
class max_speed
3054+
0 bird 389.0
3055+
1 bird 24.0
3056+
2 mammal 80.5
3057+
3 mammal NaN
3058+
3059+
You can also use `reset_index` with `MultiIndex`.
3060+
3061+
>>> index = pd.MultiIndex.from_tuples([('bird', 'falcon'),
3062+
... ('bird', 'parrot'),
3063+
... ('mammal', 'lion'),
3064+
... ('mammal', 'monkey')],
3065+
... names=['class', 'name'])
3066+
>>> columns = pd.MultiIndex.from_tuples([('speed', 'max'),
3067+
... ('speed', 'type')])
3068+
>>> df = pd.DataFrame([(389.0, 'fly'),
3069+
... ( 24.0, 'fly'),
3070+
... ( 80.5, 'run'),
3071+
... (np.nan, 'jump')],
3072+
... index=index,
3073+
... columns=columns)
3074+
>>> df
3075+
speed
3076+
max type
3077+
class name
3078+
bird falcon 389.0 fly
3079+
parrot 24.0 fly
3080+
mammal lion 80.5 run
3081+
monkey NaN jump
3082+
3083+
If the index has multiple levels, we can reset a subset of them:
3084+
3085+
>>> df.reset_index(level='class')
3086+
class speed
3087+
max type
3088+
name
3089+
falcon bird 389.0 fly
3090+
parrot bird 24.0 fly
3091+
lion mammal 80.5 run
3092+
monkey mammal NaN jump
3093+
3094+
If we are not dropping the index, by default, it is placed in the top
3095+
level. We can place it in another level:
3096+
3097+
>>> df.reset_index(level='class', col_level=1)
3098+
speed
3099+
class max type
3100+
name
3101+
falcon bird 389.0 fly
3102+
parrot bird 24.0 fly
3103+
lion mammal 80.5 run
3104+
monkey mammal NaN jump
3105+
3106+
When the index is inserted under another level, we can specify under
3107+
which one with the parameter `col_fill`. If we specify a nonexistent
3108+
level, it is created:
3109+
3110+
>>> df.reset_index(level='class', col_level=1, col_fill='species')
3111+
species speed
3112+
class max type
3113+
name
3114+
falcon bird 389.0 fly
3115+
parrot bird 24.0 fly
3116+
lion mammal 80.5 run
3117+
monkey mammal NaN jump
30553118
"""
30563119
inplace = validate_bool_kwarg(inplace, 'inplace')
30573120
if inplace:

0 commit comments

Comments
 (0)