在之前学习了python基础的情况下,没有运用到实际场景中,缺乏敲代码的经验,所以感觉很难掌握这门编程语言,虽然不是科班出生,但是对这方面比较感兴趣,所以打算利用空余时间学习积累,并通过CSDN记录我的学习日记~
概念
reset_index() 是 Pandas 库中的一个函数,通常用于 DataFrame 对象。调用这个函数后,会创建一个新的 DataFrame,其中包含原始 DataFrame 的数据以及索引列。在新的 DataFrame 中,原始的索引被转换为一列,并被命名为 ‘index’(除非通过 name 参数指定了其他名称)。
reset_index()的用途:
1.重置索引:如果你有一个 DataFrame,并且想要重置其索引,使其从0开始,你可以使用 reset_index() 方法,用于将 DataFrame 的索引(index)重置为默认整数索引。并且可以选择是否保留原来的索引作为新的列。这通常在分组操作之后使用,比如在使用 groupby() 方法后,每组的索引可能会变成分组键,而不是原始的整数索引。
import pandas as pd
# 假设 df 是原始的 DataFrame
df_reset = df.reset_index()
#df_reset 是 reset_index() 函数调用的返回值,即新生成的 DataFrame。这个新的 DataFrame 包含了原始 DataFrame 的数据,并且索引被重置为从 0 开始的整数索引。以及增加了一个名为 ‘index’ 的新列,该列包含了原始 DataFrame 的索引值。原始 DataFrame df 保持不变。
import pandas as pd
# 假设 df 是原始的 DataFrame
df = df.reset_index()
#df 被赋值为 reset_index() 函数的返回值。这意味着原始 DataFrame df 被修改了,变成了一个新的 DataFrame,其索引被重置。在这种情况下,原始 DataFrame df 和 df_reset 指向的是同一个对象。
第一个示例中,原始 DataFrame 保持不变,而第二个示例中,原始 DataFrame 被修改了。如果您想保留原始 DataFrame 并得到一个新的 DataFrame,应该使用第一个示例中的方法。如果您想直接修改原始 DataFrame,可以使用第二个示例中的方法。
如果想保留原来的索引:
df = df.reset_index(drop=False)
#如果使用 drop=True,那么原来的索引将被丢弃,不会出现在 DataFrame 中。
如果想重置索引而不创建新 DataFrame,可以使用 inplace=True 参数:
df.reset_index(inplace=True)
#这样做会将修改应用到原始 DataFrame 上,而不是创建一个新的 DataFrame。在这种情况下,原始 DataFrame 的索引将被重置,并且会新增一个名为 ‘index’(或你指定的其他名称)的列。
2.分组后重置索引:在分组操作后,每个组的索引是分组键,如果你想对每个组进行操作后重置索引,可以使用 reset_index()。
#根据某列(例如’column’)对 DataFrame 进行分组
grouped = df.groupby('column')
#计算每个组的和,并重置索引
grouped_sum = grouped.sum().reset_index()
例子
假设我们有一个简单的 DataFrame,它包含了学生的姓名和他们的考试成绩。
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({
'姓名': ['张三', '李四', '王五'],
'分数': [85, 92, 78]
})
# 默认的索引是 0, 1, 2
print("原始 DataFrame:")
print(df)
运行结果
在这个例子中,原始的 DataFrame 有数字索引 0, 1, 2。
# 现在我们想要将索引重置为学生的姓名
df_reset = df.reset_index()
# 重置后的索引是 '张三', '李四', '王五'
print("\n重置索引后的 DataFrame:")
print(df_reset)
当我们调用 reset_index() 方法时,Pandas 将索引重置为 DataFrame 的第一列(‘姓名’),并且将原来的索引作为一个新的列添加到 DataFrame 中。
运行结果
所以,重置后的 DataFrame 包含了学生的姓名作为索引,并且多了一个名为 ‘索引’ 的新列,列出了原来的索引值。
注:在这个例子中,reset_index() 方法的 drop=True 参数没有被使用,所以原来的索引值被作为一个新列保留了下来。
补充
在Python中,特别是在使用pandas库时,reset_index()是一个用于重置DataFrame索引的函数。如果在调用这个函数时前面加了一个点(.),这表示该操作是在当前对象上直接执行的,而不需要单独调用函数。
这里的.表示对df对象本身的操作,reset_index()是一个方法(method),它被绑定到了df对象上。调用这个方法会修改df对象本身,重置其索引。
如果不加点,而是作为独立函数调用:
df_reset = reset_index(df)
这里reset_index是一个普通的函数,你需要将DataFrame作为参数传递给它,并且它会返回一个新的DataFrame,而不是修改原来的DataFrame。在这种情况下,df_reset和df是两个不同的对象。
总结:加不加点取决于你是直接对当前对象进行操作,还是将操作作为一个独立的函数调用。加点的用法更加简洁,并且直接修改了当前对象。