📅  最后修改于: 2023-12-03 15:33:23.436000             🧑  作者: Mango
在 pandas 中,DataFrame 的索引可以被重置,即将索引列变为普通的列,同时生成一个新的整数索引列。这个操作可以使用 reset_index()
方法来实现。
reset_index()
方法reset_index()
方法的语法为:
DataFrame.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill='')
其中,参数解释如下:
level
:可选参数,表示要重置的索引级别,默认值为所有索引级别。如果一个 DataFrame 只有一层索引,那么 level
就是 0,level
为 1 表示重置第二个索引,以此类推。drop
:可选参数,表示是否要丢弃原来的索引列,默认为 False,即将索引列保留为一列。inplace
:可选参数,表示是否直接对原 DataFrame 进行修改,默认为 False,即不直接修改,而是返回一个新的 DataFrame。col_level
:可选参数,表示为多重索引中的列级别指定要重置的级别,默认为 0。col_fill
:可选参数,表示要使用的列名。如果为 None,则只重置行索引。接下来,我们来演示一些重置索引的操作。
首先,我们创建一个样本数据:
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 35, 40],
'Country': ['US', 'Canada', 'UK', 'Australia']}
df = pd.DataFrame(data=data)
df
输出结果为:
Name Age Country
0 Alice 25 US
1 Bob 30 Canada
2 Charlie 35 UK
3 David 40 Australia
现在,我们来重置这个 DataFrame 的索引:
df_reset = df.reset_index(drop=True)
df_reset
这里使用了 drop=True
,表示将原来的索引列删除。此时,输出的结果为:
Name Age Country
0 Alice 25 US
1 Bob 30 Canada
2 Charlie 35 UK
3 David 40 Australia
可以看到,新的 DataFrame 生成了一个整数索引列。
如果使用 drop=False
,则会保留原来的索引列:
df_reset = df.reset_index(drop=False)
df_reset
此时,输出结果为:
index Name Age Country
0 0 Alice 25 US
1 1 Bob 30 Canada
2 2 Charlie 35 UK
3 3 David 40 Australia
可以看到,新的 DataFrame 中有一个叫做 index
的列,其中包含了原来的索引值。
如果 DataFrame 中有多级索引,可以通过 level
参数来指定要重置的级别。例如:
df_midx = pd.DataFrame(data=data, columns=['Name', 'Country'])
df_midx.set_index(['Country', 'Name'], inplace=True)
df_midx_reset = df_midx.reset_index(level=1)
df_midx_reset
此时,输出的结果为:
Name
Country
US Alice
Canada Bob
UK Charlie
Australia David
可以看到,原来的 Name
列变成了一列索引,生成了一个新的整数索引列。