我只是想知道这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
有人可以告诉我有什么区别吗?有任何例子可以说明吗?
答案 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可以节省一些键入操作和不必要的熊猫操作;)