如果我有一个像这样的数据框(我从最后的链接中复制了示例数据框):
Browsers Sessions
Chrome 201
IE 136
Safari 101
Firefox 36
SamsungBrowse 12
Opera 6
我希望Session的总和值的前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
答案 0 :(得分:2)
首先通过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_values
与head
:
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