Выберите первые N строк по определенному значению суммы одного столбца в Python - PullRequest
0 голосов
/ 02 января 2019

Если у меня есть такой фрейм данных (я копирую примерный фрейм данных по ссылке в конце):

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 значений и сумму всех других значений

1 Ответ

0 голосов
/ 02 января 2019

Сначала отфильтруйте по 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

EDIT:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...