pandas reset index
在使用pandas
处理数据的过程中,经常会遇到需要重新设置索引的情况。reset_index()
方法可以帮助我们重新设置索引,同时保留原始索引作为新的一列数据。本文将详细解释reset_index()
的用法和示例。
reset_index()
方法的基本用法
reset_index()
方法是pandas
中DataFrame
对象的一个方法,用于重新设置索引。其基本语法如下:
DataFrame.reset_index(level=None, drop=False, inplace=False)
level
:指定要重置的索引级别,默认为None
,表示重置所有索引。drop
:是否丢弃原始索引,默认为False
,即将原始索引保留为一列数据。inplace
:是否在原地修改数据,默认为False
,即返回一个新的DataFrame
。
示例数据准备
为了演示reset_index()
的用法,首先创建一个包含学生信息的DataFrame
,该数据包含学生姓名、成绩和年龄。
import pandas as pd
data = {'姓名': ['小明', '小红', '小刚'],
'成绩': [85, 90, 88],
'年龄': [20, 21, 22]}
df = pd.DataFrame(data)
print(df)
运行以上代码,我们可以得到以下输出:
姓名 成绩 年龄
0 小明 85 20
1 小红 90 21
2 小刚 88 22
重新设置索引
现在,我们将使用reset_index()
方法重新设置索引,并保留原始索引作为一列数据。
new_df = df.reset_index()
print(new_df)
运行以上代码,我们可以得到以下输出:
index 姓名 成绩 年龄
0 0 小明 85 20
1 1 小红 90 21
2 2 小刚 88 22
可以看到,新的DataFrame
中增加了一个index
列,原始的索引从0
开始重新排列。
丢弃原始索引
如果我们不希望保留原始索引,可以通过drop=True
来设置:
new_df = df.reset_index(drop=True)
print(new_df)
运行以上代码,我们可以得到以下输出:
姓名 成绩 年龄
0 小明 85 20
1 小红 90 21
2 小刚 88 22
可以看到,原始索引已经被丢弃,索引从0
开始重新排列。
重新设置多级索引
在DataFrame
中,我们也可以使用多级索引,reset_index()
方法同样适用于多级索引。
df.set_index(['姓名', '年龄'], inplace=True)
print(df)
运行以上代码,我们可以得到以下输出:
成绩
姓名 年龄
小明 20 85
小红 21 90
小刚 22 88
现在,我们重新设置索引,并保留原始索引作为一列数据。
new_df = df.reset_index()
print(new_df)
运行以上代码,我们可以得到以下输出:
姓名 年龄 成绩
0 小明 20 85
1 小红 21 90
2 小刚 22 88
可以看到,原始的多级索引被重新设置为列数据,并且增加了一个index
列。
总结
在数据处理过程中,经常需要重新设置索引。reset_index()
方法可以帮助我们实现这一目的,并且可以灵活控制是否保留原始索引以及重置哪些索引。