python - 通过Python中一列的特定总和值选择前N行
问题描述
如果我有这样的数据框(我最后从链接复制示例数据框):
Browsers Sessions
Chrome 201
IE 136
Safari 101
Firefox 36
SamsungBrowse 12
Opera 6
我希望前 N 行的总和值Sessions
小于给定数字,比如500?如何在 Python 中实现这一点?谢谢。
Browsers Sessions
Chrome 201
IE 136
Safari 101
这是我尝试过的:
df = df[df['Session'].sum(axis=1) > 500]
这是一个参考链接以及我获得的示例数据。
解决方案
首先过滤boolean indexing
,然后使用nlargest
:
df = df[df['Sessions'] < 500].nlargest(3, columns='Sessions')
#alternative for filtering
#df = df.query('Sessions < 500').nlargest(3, columns='Sessions')
df = df[df['Sessions'] < 500].sort_values('Sessions', ascending=False).head(3)
print (df)
Browsers Sessions
0 Chrome 201
1 IE 136
2 Safari 101
编辑:
df = df.sort_values('Sessions', ascending=False)
print (df['Sessions'].cumsum())
0 201
1 337
2 438
3 474
4 486
5 492
Name: Sessions, dtype: int64
df = df[df['Sessions'].cumsum() < 450]
print (df)
Browsers Sessions
0 Chrome 201
1 IE 136
2 Safari 101
推荐阅读
- python - Python 抓取;多个功能作为一个整体协同工作
- python - 使用 PySide2 从资源 (QRC) 文件导入 QML
- c++ - std::pair 赋值运算符的性能问题是什么?
- c - 返回 NULL 指针
- python - 我得到 TypeError: can't multiply sequence by non-int of type 'float' 有什么建议吗?
- laravel - 使用 Recaptcha v3 后提交表单不起作用
- reactjs - 应用样式会扭曲 React Callout 组件
- javascript - 如何创建一个保持不变且在 Javascript 中不变的随机数?
- r - 根据多个其他列更改各个列 - R
- flutter - Flutter 构建失败并出现致命错误:找不到“Flutter/Flutter.h”文件