首页 > 解决方案 > 显示每周交付量最多的国家/地区的问题

问题描述

我有一个名为 df1 的 pandas 数据框,包含三列:Country、Week_number 和 Total_deliveries

下面是使用的输出:df1.head(10)

在此处输入图像描述

如果我使用以下方法选择一些行,这就是输出:df1.take([1, 50, 180, 256, 147])

在此处输入图像描述

我希望能够在每个国家/地区每周获得最高的总交付量。

到目前为止,我尝试使用此代码:

df_most_deliveries = df1.groupby(['Week_number']).agg({'Total_deliveries': ['max']})

我在下面得到这个结果。它非常接近我想要的。我只需要添加国家名称。

在此处输入图像描述

然后当我添加国家列时:df_most_deliveries = df1.groupby(['Week_number', 'Country']).agg({'Total_deliveries': ['max']})

这是结果:

在此处输入图像描述

我的代码有问题。因为它列出了每周的所有国家。但我只想要一个按周数分组的总交付量最高的国家。

我如何更改代码以适应此要求?

标签: python-3.xpandasdataframepandas-groupby

解决方案


您正在寻找idxmax

df.loc[df.groupby('Week_number')['Total_deliveries'].idxmax()]

您也可以通过以下方式获得drop_duplicates

df.sort_values('Total_deliveries').drop_duplicates('Country', keep='last')

推荐阅读