在 pandas DataFrame
实例上使用 groupby
时,我从未使用过 as_index=False
或reset_index()
。我实际上想不出有什么理由我不会这样做。因为我的行为不是 pandas 默认行为(事实上,因为 groupby
索引根本存在),所以我怀疑 pandas 的某些功能我没有利用。
任何人都可以描述不重置索引会有利的情况吗?
最佳答案
当您执行groupby/agg
操作时,很自然地将结果视为从groupby键到聚合标量值的映射。如果我们使用普通的 Python,字典将是保存从键到值的映射的自然数据结构。由于我们使用 Pandas,Series 是自然的数据结构。它的索引将保存键,系列值将是聚合标量。如果每个键有多个聚合值,那么要使用的自然数据结构将是 DataFrame。
将键保存在索引而不是列中的优点是,根据索引标签查找值的操作时间复杂度为 O(1),而根据列中的值查找值的操作时间复杂度为 O(n)手术。
由于 groupby/agg
操作的结果自然适合以 groupby 键作为索引的 Series 或 DataFrame,并且由于索引具有这种特殊的快速查找属性,因此最好返回结果默认采用这种形式。
关于python - *不*重置 pandas 中的 groupby 索引的用例有哪些,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44937573/