Условия по mutli-index + данные - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть следующий Dataframe, который я группирую, чтобы получить многоиндексный Dataframe:

    In[33]: df = pd.DataFrame([[0, 'foo', 5], [0, 'foo', 7], [1, 'foo', 4], [1, 'bar', 5], [1, 'foo', 6], [1, 'bar', 2], [2, 'bar', 3]], columns=['id', 'foobar', 'A'])
In[34]: df
Out[34]: 
   id foobar  A
0   0    foo  5
1   0    foo  7
2   1    foo  4
3   1    bar  5
4   1    foo  6
5   1    bar  2
6   2    bar  3
In[35]: df.groupby(['id', 'foobar']).size()
Out[35]: 
id  foobar
0   foo       2
1   bar       2
    foo       2
2   bar       1
dtype: int64

Я хочу получить строки в "id", где number "foo"> = 2 AND number of"bar"> = 2, поэтому в основном получим:

   foobar  A
id          
1     bar  2
      foo  2

Но я немного растерялся из-за того, как я должен сформулировать эти условия с помощью мультииндекса?

edit: это не такизбыточность с Как фильтровать даты на мультииндексном фрейме данных , так как я не работаю с датами и мне нужны условия для количества конкретных значений в моем фрейме данных.

1 Ответ

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

Используя all после unstack, затем выберите тот, который вам нужен, stack назад

new=df.groupby(['id', 'foobar']).size().unstack(fill_value=0)
new[new.ge(2).all(1)].stack()
id  foobar
1   bar       2
    foo       2
dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...