我在下面有一个数据集示例(仅显示前几行,但有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行):
当我按照大陆分组时,我无法理解为什么我仍然在同一个大陆上有两行?
在这种情况下groupby
操作也按country
进行分组,即使我从未在groupby
函数中指定它?因为我在SQL中知道你应该使用像max
,min
,sum
等聚合函数。但是在这种情况下我不需要传入一个聚合函数我得到了上面的结果。
答案 0 :(得分:3)
没有!
正在发生的事情是head
是groupby
对象上的一种方法,其行为与pd.DataFrame.head
略有不同。
groupby
version of head
所做的是返回每个组的头部。
因此,我们可以通过将1
传递给head
方法并看到它返回每个子集的第一行来更清楚地看到这一点
df.groupby('continent').head(1)
答案 1 :(得分:2)
drinks.groupby('continent').head([n=5])
会返回每个组中的第一个n
行,但会按原始索引重新排序。尝试拨打drinks.groupby('continent').head(1)
,您会看到结果中只包含每个大洲的一个国家/地区。