DataFrame.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill='') [source]
重置索引或索引的一个级别。
重置DataFrame的索引,并使用默认索引。如果DataFrame有一个MultiIndex,此方法可以删除一个或多个级别。
参数: | level : 默认为 只从索引中删除给定的级别。默认移除所有级别。 drop : 不要尝试向dataframe列插入索引。 这会将索引重置为默认整数索引。 inplace : 适当地修改 col_level : 如果列有多个级别,请确定将标签插入到哪个级别。 默认情况下,它被插入到第一级。 col_fill : 如果列有多个级别,请确定其他级别的命名方式。 如果没有,则重复索引名。 |
返回值: |
53/5000 带有新索引的 则 |
例子,
1)基本 DataFrame 重置索引
import pandas as pd import numpy as np df = pd.DataFrame([('bird', 389.0), ('bird', 24.0), ('mammal', 80.5), ('mammal', np.nan)], index=['falcon', 'parrot', 'lion', 'monkey'], columns=('class', 'max_speed')) # 默认行为:索引变为列,新索引为 RangeIndex df_reset = df.reset_index() print(df_reset)
2)不保留原索引列(drop=True)
import pandas as pd import numpy as np df = pd.DataFrame([('bird', 389.0), ('bird', 24.0), ('mammal', 80.5), ('mammal', np.nan)], index=['falcon', 'parrot', 'lion', 'monkey'], columns=('class', 'max_speed')) print(df) df_reset_drop = df.reset_index(drop=True) print(df_reset_drop)
3)重置 MultiIndex 的部分层级
import pandas as pd import numpy as np index = pd.MultiIndex.from_tuples( [('bird', 'falcon'), ('bird', 'parrot'), ('mammal', 'lion'), ('mammal', 'monkey')], names=['class', 'name']) columns = pd.MultiIndex.from_tuples( [('speed', 'max'), ('species', 'type')]) df_multi = pd.DataFrame([(389.0, 'fly'), (24.0, 'fly'), (80.5, 'run'), (np.nan, 'jump')], index=index, columns=columns) print(df_multi) # 重置 class 层级 df_reset_class = df_multi.reset_index(level='class') print(df_reset_class)
4)使用 col_level
指定插入层级
import pandas as pd import numpy as np index = pd.MultiIndex.from_tuples( [('bird', 'falcon'), ('bird', 'parrot'), ('mammal', 'lion'), ('mammal', 'monkey')], names=['class', 'name']) columns = pd.MultiIndex.from_tuples( [('speed', 'max'), ('species', 'type')]) df_multi = pd.DataFrame([(389.0, 'fly'), (24.0, 'fly'), (80.5, 'run'), (np.nan, 'jump')], index=index, columns=columns) print(df_multi) df_reset_col_level = df_multi.reset_index(level='class', col_level=1) print(df_reset_col_level)
5)使用 col_fill
指定列标签缺失时的填充值
import pandas as pd import numpy as np index = pd.MultiIndex.from_tuples( [('bird', 'falcon'), ('bird', 'parrot'), ('mammal', 'lion'), ('mammal', 'monkey')], names=['class', 'name']) columns = pd.MultiIndex.from_tuples( [('speed', 'max'), ('species', 'type')]) df_multi = pd.DataFrame([(389.0, 'fly'), (24.0, 'fly'), (80.5, 'run'), (np.nan, 'jump')], index=index, columns=columns) print(df_multi) df_reset_col_fill = df_multi.reset_index( level='class', col_level=1, col_fill='species') print(df_reset_col_fill)
6)使用 col_fill
指定一个新的列层级名
import pandas as pd import numpy as np index = pd.MultiIndex.from_tuples( [('bird', 'falcon'), ('bird', 'parrot'), ('mammal', 'lion'), ('mammal', 'monkey')], names=['class', 'name']) columns = pd.MultiIndex.from_tuples( [('speed', 'max'), ('species', 'type')]) df_multi = pd.DataFrame([(389.0, 'fly'), (24.0, 'fly'), (80.5, 'run'), (np.nan, 'jump')], index=index, columns=columns) print(df_multi) df_reset_new_level = df_multi.reset_index( level='class', col_level=1, col_fill='genus') print(df_reset_new_level)