通过Python中某一列的特定总和值选择前N行

时间:2019-01-02 11:30:03

标签: python pandas dataframe

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

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

1 个答案:

答案 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_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