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

2024-06-29 00:46:29 发布

您现在位置:Python中文网/ 问答频道 /正文

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

country,beer_servings,spirit_servings,wine_servings,total_litres_of_pure_alcohol,continent
Afghanistan,0,0,0,0.0,Asia
Albania,89,132,54,4.9,Europe
Algeria,25,0,14,0.7,Africa
Andorra,245,138,312,12.4,Europe
Angola,217,57,45,5.9,Africa
Antigua & Barbuda,102,128,45,4.9,North America
...

当我运行这个:drinks.groupby('continent').head()

我得到一个30行的数据帧。但在这30行中,continent的名称仍然重复。例如,在下图中,您可以看到Europe重复了两次(在第1行和第3行):

enter image description here

我不明白,当我最初按大陆分组时,为什么我仍然有两排相同的大陆?在

在本例中,groupby操作是否也按country分组,即使我从未在groupby函数中指定过它?因为我知道在SQL中你应该使用一个聚合函数,比如maxminsum,等等,但是在这种情况下,我不需要传入聚合函数,我得到了上面的结果。在


Tags: 数据函数示例countrytotalgroupby大陆europe
2条回答

drinks.groupby('continent').head([n=5])返回每个组中的第一个n行,然后按原始索引对它们重新排序。尝试调用drinks.groupby('continent').head(1),您将看到结果中只包括来自每个大陆的一个国家。在

不!在

实际情况是headgroupby对象上的一个方法,其行为与pd.DataFrame.head稍有不同。在

^{} version of ^{}的作用是返回每个组的头。在

因此,我们可以通过将1传递给head方法更清楚地看到这一点,并看到它返回每个子集的第一行

df.groupby('continent').head(1)

enter image description here

相关问题 更多 >