Фильтр панд после агрегации - PullRequest
0 голосов
/ 17 ноября 2018

Возможно ли отфильтровать данные после групповой агрегации?

Я суммировал сумму после применения функции groupby и хочу увидеть строки, в которых сумма находится между некоторыми значениями.

Вот базовый код

A = pd.DataFrame([
    [1, 2], 
    [2, 3], 
    [1, 6], 
    [2, 7], 
    [3, 5],
    [2, 9],
    [4, 7], 
    [3, 5],
    [3, 9],
    [3, 4]
], columns=['id', 'val'])

display(A)
display(A.groupby(['id']).agg({'val': ['sum', 'count']}))

Я хочу count из val между 1 и 4 после агрегирования

1 Ответ

0 голосов
/ 17 ноября 2018

Я не понимаю, если вы хотели сумму от 1 до 4 или подсчет.Итак, вот как я сделал это для двух вариантов:

import pandas as pd
A = pd.DataFrame([
    [1, 2], 
    [2, 3], 
    [1, 6], 
    [2, 7], 
    [3, 5],
    [2, 9],
    [4, 7], 
    [3, 5],
    [3, 9],
    [3, 4],
    [1,2],
    [1,2],
    [1,2],
    [1,2],
    [1,2],
], columns=['id', 'val'])

s = A.groupby(['id']).agg({'val': ['sum', 'count']})
# If you want the count
s[(s['val']['count']<=4) & (s['val']['count']>=1)]
# If you want the sum
s[(s['val']['sum']<=4) & (s['sum']['count']>=1)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...