【问题标题】:Difference between "as_index = False", and "reset_index()" in pandas groupbypandas groupby 中“as_index = False”和“reset_index()”之间的区别
【发布时间】:2019-01-22 19:33:59
【问题描述】:

我只是想知道这两个执行的功能有什么区别。

数据:

import pandas as pd
df = pd.DataFrame({"ID":["A","B","A","C","A","A","C","B"], "value":[1,2,4,3,6,7,3,4]})

as_index=False:

df_group1 = df.groupby("ID").sum().reset_index()

reset_index():

df_group2 = df.groupby("ID", as_index=False).sum()

它们都给出完全相同的输出。

  ID  value
0  A     18
1  B      6
2  C      6

谁能告诉我有什么区别以及说明相同之处的任何示例?

【问题讨论】:

  • 它们完全一样。
  • @QusaiAlothman:不,它们只是在这种特殊情况下是相同的 因为 OP 的数据框除了默认的 0,1,2 之外没有显式索引... 所以保留它或重置/删除它并没有什么不同。如果数据框实际上有一个索引,例如100、101、102..结果不一样。

标签: python pandas pandas-groupby


【解决方案1】:

当您使用as_index=False 时,您向groupby() 表明您不想将列ID 设置为索引(呵呵!)。当两种实现产生相同的结果时,请使用as_index=False,因为它会为您节省一些输入和不必要的 pandas 操作;)

但是,有时您希望对组应用更复杂的操作。在这些情况下,您可能会发现其中一种比另一种更适合。

示例 1: 您希望在两个轴上对一组中的三个变量(即列)的值求和。

使用as_index=True 允许您在不指定列名的情况下对axis=1 应用总和,然后在轴0 上求和。操作完成后,您可以使用reset_index(drop=True/False) 获取下的数据框正确的形式。

示例 2:您需要根据 groupby() 中的列为组设置一个值。

设置as_index=False 允许您检查公共列而不是索引的条件,这通常更容易。

在某些时候,您可能会在对组应用操作时遇到KeyError。在这种情况下,通常是因为您试图在聚合函数中使用当前是 GroupBy 对象索引的列。

【讨论】:

    猜你喜欢
    • 2021-11-18
    • 1970-01-01
    • 2013-10-07
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 2012-08-23
    相关资源
    最近更新 更多