多索引+数据的条件

时间:2018-11-22 16:00:54

标签: python pandas

我将以下数据框归为一组以获得多索引数据框:

    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”中获取行,其中“ foo”的数量> = 2和“ bar”的数量> = 2,所以基本上可以得到:

   foobar  A
id          
1     bar  2
      foo  2

但是我对如何使用多索引来说明这种情况感到有些困惑?

edit:对于How to filter dates on multiindex dataframe来说,这不是多余的,因为我不使用日期,并且我需要有关数据框中特定值数量的条件。

1 个答案:

答案 0 :(得分:1)

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