首页 > 解决方案 > 通过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]

这是一个参考链接以及我获得的示例数据。

Python Pandas - 如何获取前 n 个值和所有其他值的总和

标签: pythonpandasdataframe

解决方案


首先过滤boolean indexing,然后使用nlargest

df = df[df['Sessions'] < 500].nlargest(3, columns='Sessions')
#alternative for filtering
#df = df.query('Sessions < 500').nlargest(3, columns='Sessions')

sort_valueshead

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

推荐阅读