Фильтрация Pandas данных по результатам группирования по - PullRequest
0 голосов
/ 17 января 2020

Кажется, я не могу найти решение для этого, поэтому я решил спросить, потому что могу представить, что это будет распространенной проблемой. У меня есть следующий фрейм данных df:

    A   B       Value
0   1   Text 1  Additional comments
1   1   Text 2  TRUE
2   1   Text 3  Apples
3   2   Text 4  Face
4   3   Text 4  Believe
5   4   Text 2  Meat
6   4   Text 9  Chicken
7   5   Text 10 Dairy
8   5   Text 14 Poultry

Я хочу отфильтровать это, сгруппировав столбцы A и B и исключив все строки с числом меньше 2, так что конечный результат фрейма данных будет удаление строк 3 и 4, как показано ниже

    A   B       Value
0   1   Text 1  Additional comments
1   1   Text 2  TRUE
2   1   Text 3  Apples
5   4   Text 2  Meat
6   4   Text 9  Chicken
7   5   Text 10 Dairy
8   5   Text 14 Poultry

Я понимаю, как получить группу по счетчикам и отфильтровать их: dfg = df.groupby(['A','B']).counts() и dfg = df.groupby(['A','B']).filter(lambda x: len(x) > 1), но как мне взять этот результирующий кадр данных (dfg ) и примените его обратно в исходный фрейм данных, чтобы я получил результаты. Я относительно новичок в области информационных фреймов, поэтому это может быть очевидно, но я некоторое время смотрел на это.

Любая помощь очень ценится! Спасибо! Jon

1 Ответ

2 голосов
/ 17 января 2020

groupby и transform, затем сравните:

df[df.groupby('A')['A'].transform('size').ge(2)]

   A                B                Value
0  1           Text 1  Additional comments
1  1           Text 2                 TRUE
2  1           Text 3               Apples
5  4           Text 2                 Meat
6  4           Text 9              Chicken
7  5           Text 10               Dairy
8  5           Text 14             Poultry
...