Python groupby是否自动对pandas中的所有非数字列进行分组?

Python groupby是否自动对pandas中的所有非数字列进行分组?,python,pandas,Python,Pandas,下面是一个数据集示例(仅显示前几行,但共有193行): 当我运行此命令时:drinks.groupby('containment').head() 我得到一个30行的数据帧。但在这30行中,我仍然有大陆的重复名称。例如,在下图中,您可以看到Europe重复了两次(第1行和第3行): 我不明白为什么我最初按大陆分组时,仍然有两行是同一个大陆 在这种情况下,groupby操作是否也按country分组,即使我从未在groupby函数中指定过它?因为我知道在SQL中应该使用聚合函数,比如max,mi

下面是一个数据集示例(仅显示前几行,但共有193行):

当我运行此命令时:
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)