Pandas 如何在给定的DataFrame中重置索引

  • Post category:Python

重置索引是指将当前索引列重新整理为从零开始的连续编号索引。在 Pandas 中,可以使用 reset_index() 方法来实现。

首先,我们需要创建一个示例 DataFrame,用于说明重置索引的过程:

import pandas as pd

df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
                   'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
                   'C': [1, 2, 2, 4, 3, 4, 4, 5],
                   'D': [10, 20, 30, 40, 50, 60, 70, 80]})

这是一个包含 8 行和 4 列的 DataFrame。要重置索引列为从零开始编号的索引列,可以如下操作:

df.reset_index(inplace=True, drop=True)

其中,inplace=True 意味着修改当前的 DataFrame;drop=True 意味着将当前的索引列舍弃并添加新的从零开始编号的索引列。

操作后的 DataFrame 如下:

   index    A      B  C   D
0      0  foo    one  1  10
1      1  bar    one  2  20
2      2  foo    two  2  30
3      3  bar  three  4  40
4      4  foo    two  3  50
5      5  bar    two  4  60
6      6  foo    one  4  70
7      7  foo  three  5  80

我们可以看到,index 列已经被重置为从零开始的连续编号。

除了使用默认参数 inplace=True, drop=True 之外,reset_index 方法还支持其他多种参数组合,例如:

  1. df.reset_index(drop=True):删除当前索引列,不添加新的索引列。
  2. df.reset_index(level=0):将第一层级索引列重置为新的从零开始的连续编号索引列。如果 DataFrame 没有多级索引列,则与默认方法一样。
  3. df.reset_index(level=0, col_level=1):在多级列索引中,将第二层级列索引列重置为新的从零开始的连续编号列索引列。如果 DataFrame 不是多级列索引,则与默认方法一样。