Подсчитать количество категорий и удалить по списку, если условие не выполнено - PullRequest
0 голосов
/ 25 сентября 2018

Дано:

import pandas as pd

lis1= ('apple','orange','strawberry','strawberry','strawberry','apple','orange','orange','orange','strawberry')
lis2= ("lorem ipsum review","lorem ipsum review","lorem ipsum review","lorem ipsum review","lorem ipsum review","lorem ipsum review","lorem ipsum review","lorem ipsum review","lorem ipsum review","lorem ipsum review")

pd.DataFrame({'category':lis1, 'review': lis2})

     category              review
0       apple  lorem ipsum review
1      orange  lorem ipsum review
2  strawberry  lorem ipsum review
3  strawberry  lorem ipsum review
4  strawberry  lorem ipsum review
5       apple  lorem ipsum review
6      orange  lorem ipsum review
7      orange  lorem ipsum review
8      orange  lorem ipsum review
9  strawberry  lorem ipsum review

Требуется:

lis1= ('orange','strawberry','strawberry','strawberry','orange','orange','orange','strawberry')
lis2= ("lorem ipsum review","lorem ipsum review", "lorem ipsum review","lorem ipsum review","lorem ipsum review","lorem ipsum review","lorem ipsum review","lorem ipsum review")

pd.DataFrame({'category':lis1, 'review': lis2})

     category              review
0      orange  lorem ipsum review
1  strawberry  lorem ipsum review
2  strawberry  lorem ipsum review
3  strawberry  lorem ipsum review
4      orange  lorem ipsum review
5      orange  lorem ipsum review
6      orange  lorem ipsum review
7  strawberry  lorem ipsum review

Мне нужен код для подсчета уникальных категорий (nunique ()) и удаления категорий, которые отображаются только меньшечем в 3 раза.Пример показывает, что, поскольку apple - единственная категория, которая появляется дважды, было применено удаление по списку.

1 Ответ

0 голосов
/ 25 сентября 2018

Вы можете отфильтровать результаты groupby и transform:

df[df.groupby('category')['category'].transform('count').gt(2)]

     category              review
1      orange  lorem ipsum review
2  strawberry  lorem ipsum review
3  strawberry  lorem ipsum review
4  strawberry  lorem ipsum review
6      orange  lorem ipsum review
7      orange  lorem ipsum review
8      orange  lorem ipsum review
9  strawberry  lorem ipsum review

Другое решение: value_counts + map:

df[df.category.map(df['category'].value_counts()).gt(2)]

     category              review
1      orange  lorem ipsum review
2  strawberry  lorem ipsum review
3  strawberry  lorem ipsum review
4  strawberry  lorem ipsum review
6      orange  lorem ipsum review
7      orange  lorem ipsum review
8      orange  lorem ipsum review
9  strawberry  lorem ipsum review
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...