什么是* not *重置pandas中的groupby索引的用例

时间:2017-07-05 23:35:26

标签: python pandas

在pandas groupby实例上使用DataFrame时,我从来没有使用as_index=Falsereset_index()。我实际上无法想到为什么不会这样做的原因。因为我的行为不是pandas默认的(事实上,因为groupby索引存在),我怀疑有一些我没有利用的pandas功能。

有人能说出不重置索引会有利的情况吗?

1 个答案:

答案 0 :(得分:3)

当您执行groupby/agg操作时,很自然地将结果视为从groupby键到聚合标量值的映射。如果我们使用普通的Python,dict将是保存从键到值的映射的自然数据结构。由于我们使用的是Pandas,因此Series是自然数据结构。它的索引将保存密钥,而Series值将是聚合的标量。如果每个键有多个聚合值,则要使用的自然数据结构将是DataFrame。

将键保存在索引而不是列中的优点是,基于索引标签查找值是O(1)操作,而基于列中的值查找值是O(n)操作。

由于groupby/agg操作的结果自然适合使用groupby键作为索引的Series或DataFrame,并且由于索引具有此特殊的快速查找属性,因此最好在默认情况下以此形式返回结果