Фильтровать мультииндекс df на основе std - PullRequest
0 голосов
/ 16 апреля 2019
df.groupby(['name','cat'])['valtocount'].agg('count')

через вышесказанное я получаю следующий мультииндекс df:

name cat count
abc  a   1
     b   1
def  a   1
     c   2

Я хочу сохранить только те имена, где стандартное число> 0, у вас, ребята, есть какие-либо предложения?

1 Ответ

1 голос
/ 16 апреля 2019

Используйте GroupBy.transform с std или SeriesGroupBy.nunique и фильтрацией по boolean indexing:

s = df.groupby(['name','cat'])['valtocount'].agg('count')
s1 = s[s.groupby(level=0).transform('std') > 0]
print (s1)
name  cat
def   a      1
      c      2
Name: valtocount, dtype: int64

s1 = s[s.groupby(level=0).transform('nunique') != 1]
...