熊猫groupby中“ as_index = False”和“ reset_index()”之间的区别

时间:2018-08-15 21:47:57

标签: python pandas pandas-groupby

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

数据:

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

有人可以告诉我有什么区别吗?有任何例子可以说明吗?

1 个答案:

答案 0 :(得分:4)

当使用index = False时,表示要向groupby表示不想将列ID设置为索引(duh!)。在这种情况下,这两种实现都会产生相同的结果。但是,有时您想对组应用更复杂的操作。在这些情况下,您可能会发现一个比另一个更合适。

示例1:您要对两个轴上的一组中的三个变量(列)的值求和。使用as_index = True允许您在轴= 1上应用总和,而无需指定列名,然后在轴0上求和。在操作完成后,可以使用reset_index以正确的格式获取数据框。

示例2:如果您需要基于groupby中的列为组设置值,则设置as_index = False允许您检查公共列而不是通常更容易索引的条件。 / p>

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

尽管没关系,请使用as_index = False可以节省一些键入操作和不必要的熊猫操作;)