python - 取 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
我怎样才能在熊猫中实现这一点?
解决方案
利用:
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']
推荐阅读
- angular6 - 如何仅在 Angular 6 拦截器中将请求标头添加到特定域
- vagrant - Vagrant box 添加 - 无法连接到 cloud-images.ubuntu.com 端口 443:超时
- javascript - HTTP POST 403 未经授权
- sapui5 - Sap 自定义 Fiori 应用程序 LPD_CUST 附加信息是否更改?
- php - simplexml_load_file 多个等于节点
- java - org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback;
- react-native - .catch() 在 react-native 的 fetch 中
- javascript - 获取数据快递js
- c# - Xamarin 孩子添加了多个 AbsoluteLayoutFlags
- c# - SQL 查询到 MySQL 查询