熊猫重置指数似乎不起作用?

时间:2015-01-02 01:05:51

标签: python pandas indexing reset

我不确定我在哪里误入歧途,但我似乎无法在数据框上重置索引。

当我运行test.head()时,我得到以下输出:

test.head

如您所见,数据框是一个切片,因此索引超出范围。 我想要做的是重置此数据帧的索引。所以我运行test.reset_index(drop=True)。这输出如下:

reset

这看起来像是一个新的索引,但事实并非如此。再次运行test.head,索引仍然相同。尝试使用lambda.applyiterrows()会导致数据框出现问题。

如何真正重置索引?

4 个答案:

答案 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)

BrenBarn的回答有效。

以下内容也适用于this thread,这不是故障排除,而是如何重置索引:

test = test.reset_index(drop=True)

答案 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)