关于drop = True在pd.dataframe.reset_index()中的问题

时间:2019-04-18 13:21:35

标签: python pandas

在Pandas数据框中,可以使用reset_index()方法重置索引。根据文档,drop=True是一个可选参数:

drop : bool, default False
    Do not try to insert index into dataframe columns. 
    This resets the index to the default integer index.

我的问题是,第一句话是什么意思?如果我为False,它会尝试将整数索引转换为df中的新列吗?

此外,我的行顺序是否会保留,还是应该排序以确保顺序正确?

1 个答案:

答案 0 :(得分:1)

如下所示,df.reset_index()会将索引作为列移入数据框。如果该索引只是一个通用的数字索引,则您可能并不在意它,而可以将其丢弃。下面是一个简单的数据框,但我删除第一行只是为了使索引中的值不同。

df = pd.DataFrame([['a', 10], ['b', 20], ['c', 30], ['d', 40]], columns=['letter','number'])
df = df[df.number > 10]
print(df)
#   letter  number
# 1      b      20
# 2      c      30
# 3      d      40

默认行为现在显示名为index的列,它是先前的索引。您可以看到df['index']与上面的索引匹配,但是索引已从0开始重新编号。

print(df.reset_index())
#    index letter  number
# 0      1      b      20
# 1      2      c      30
# 2      3      d      40

drop=True并不假装索引很重要,只是为您提供了一个新索引。

print(df.reset_index(drop=True))
#   letter  number
# 0      b      20
# 1      c      30
# 2      d      40

关于行顺序,我怀疑它会得到维护,但是通常不应该依赖于事物存储的顺序。如果您要执行汇总功能,则可能要确保已正确排序了适合农业的数据。