📜  Pandas Dataframe 中的重置索引(1)

📅  最后修改于: 2023-12-03 15:33:23.436000             🧑  作者: Mango

Pandas DataFrame 中的重置索引

在 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 列变成了一列索引,生成了一个新的整数索引列。