首页 > 解决方案 > 取 nlargest 5 并对 pandas 中的其余部分求和/计数

问题描述

我的数据集如下所示:

ID   |    country
1    |    USA
2    |    USA
3    |    Zimbabwe
4    |    Germany

我执行以下操作以获取第一个国家/地区的名称及其对应的值。所以在我的情况下,它将是:

df.groupby(['country']).country.value_counts().nlargest(5).index[0]
df.groupby(['country']).country.value_counts().nlargest(5)[0]
df.groupby(['country']).country.value_counts().nlargest(5).index[1]
df.groupby(['country']).country.value_counts().nlargest(5)[1]
etc.

输出将是:

(USA), 388
(DEU), 245
etc.

然后我重复它,直到我在我的数据集中获得前 5 个国家。

但是,我怎样才能得到一个“其他”或“休息”列,将所有其他国家集中在一起。所以像下面这样的国家在我的数据集中并不常见:

津巴布韦、伊拉克、马来西亚、肯尼亚、澳大利亚等

所以我想要一个输出如下所示的第六个值:

(其他), 3728

我怎样才能在熊猫中实现这一点?

标签: pythonpython-3.xpandascountseries

解决方案


利用:

N = 5
#get counts of column
s = df.country.value_counts()
#select top 5 values
out = s.iloc[:N]
#add sum of another values
out.loc['Other'] = s.iloc[N:].sum()

最后如果需要 2 列 DataFrame:

df = out.reset_index()
df.columns=['country','count']

推荐阅读