Python groupby是否自动对pandas中的所有非数字列进行分组?
下面是一个数据集示例(仅显示前几行,但共有193行): 当我运行此命令时:Python groupby是否自动对pandas中的所有非数字列进行分组?,python,pandas,Python,Pandas,下面是一个数据集示例(仅显示前几行,但共有193行): 当我运行此命令时:drinks.groupby('containment').head() 我得到一个30行的数据帧。但在这30行中,我仍然有大陆的重复名称。例如,在下图中,您可以看到Europe重复了两次(第1行和第3行): 我不明白为什么我最初按大陆分组时,仍然有两行是同一个大陆 在这种情况下,groupby操作是否也按country分组,即使我从未在groupby函数中指定过它?因为我知道在SQL中应该使用聚合函数,比如max,mi
drinks.groupby('containment').head()
我得到一个30行的数据帧。但在这30行中,我仍然有大陆的重复名称。例如,在下图中,您可以看到Europe
重复了两次(第1行和第3行):
我不明白为什么我最初按大陆分组时,仍然有两行是同一个大陆
在这种情况下,groupby
操作是否也按country
分组,即使我从未在groupby
函数中指定过它?因为我知道在SQL中应该使用聚合函数,比如max
,min
,sum
,等等。但是在这种情况下,我不必传入聚合函数,我就可以得到上面的结果 不
发生的情况是,head
是groupby
对象上的一个方法,其行为与pd.DataFrame.head
稍有不同
它所做的是返回每个组的头
因此,通过将1
传递给head
方法,我们可以更清楚地看到这一点,并看到它返回每个子集的第一行
df.groupby('continent').head(1)
饮料。groupby(“大陆”).head([n=5])
返回每组的第一行n
,然后按原始索引对其重新排序。尝试调用drinks.groupby('大陆').head(1)
,您将看到每个大陆中只有一个国家包含在结果中。但是间接地,当我没有将任何参数传递给head correct时,它仍然是按大陆和国家进行分组的?由于有多行的大陆为Europe
。如果不将任何参数传递给head
,它将使用默认值n=5
。它从每个大陆提取前5行,然后在显示结果之前按原始索引对它们进行排序。非常感谢。
df.groupby('continent').head(1)