如果我有一个像这样的数据框(我最后从链接中复制了示例数据框):

Browsers        Sessions
Chrome          201
IE              136
Safari          101
Firefox         36
SamsungBrowse   12
Opera           6


我想让Sessions总和值的前N行小于给定的数字,例如500?如何在Python中做到这一点?谢谢。

Browsers        Sessions
Chrome          201
IE              136
Safari          101


这是我尝试过的:

df = df[df['Session'].sum(axis=1) > 500]


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

Python Pandas - how to get top n values and the sum of all other values

最佳答案

首先按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

关于python - 通过Python中某一列的特定总和值选择前N行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54005535/

10-12 17:24
查看更多