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)