我不确定我在哪里误入歧途,但我似乎无法在数据框上重置索引。
当我运行test.head()
时,我得到以下输出:
如您所见,数据框是一个切片,因此索引超出范围。
我想要做的是重置此数据帧的索引。所以我运行test.reset_index(drop=True)
。这输出如下:
这看起来像是一个新的索引,但事实并非如此。再次运行test.head
,索引仍然相同。尝试使用lambda.apply
或iterrows()
会导致数据框出现问题。
如何真正重置索引?
答案 0 :(得分:38)
reset_index
不会修改DataFrame;它返回带有重置索引的 new DataFrame。如果要修改原始文件,请使用inplace
参数:df.reset_index(drop=True, inplace=True)
。或者,通过执行reset_index
来分配df = df.reset_index(drop=True)
的结果。
答案 1 :(得分:9)
答案 2 :(得分:1)
我会在代码veritas的答案中添加:
如果您已经指定了索引列,那么您当然可以保存del。在我的假设示例中:
df_total_sales_customers = pd.DataFrame({'Sales': total_sales_customers['Sales'],
'Customers': total_sales_customers['Customers']}, index = total_sales_customers.index)
df_total_sales_customers = df_total_sales_customers.reset_index()
答案 3 :(得分:1)
作为in code veritas答案的扩展...而不是在最后做del
:
test = test.reset_index()
del test['index']
您可以将drop设置为True
。
test = test.reset_index(drop=True)