Фрейм данных Python: получить количество из столбца фрейма данных на основе условия?

#python #pandas #numpy #dataframe

#python #pandas #numpy #фрейм данных

Вопрос:

             name              status
    0       alex                pass
    1       alex                pass
    2       alex                unknown
    3       marcus              pass
    4       marcus              fail
    5       anthony             fail
    6       paul                pass
    7       paul                unknown
    8       paul                fail
    9       paul                pass
  

если один из name столбцов имеет запись status = pass . Я пытаюсь получить количество status = pass

             name            count      
    0       alex              2   
    1       marcus            1     
    2       anthony           0       
    3       paul              2
  

Ответ №1:

Вы можете агрегировать sum логическую маску, потому True что s обрабатывают, как 1 :

 df = df['status'].eq('pass').groupby(df['name']).sum().reset_index(name='count')
print (df)
      name  count
0     alex      2
1  anthony      0
2   marcus      1
3     paul      2
  

Ответ №2:

Мы можем использовать pd.crosstab и индексировать в интересующем столбце:

 pd.crosstab(df.name, df.status)['pass'].reset_index()

      name  pass
0     alex     2
1  anthony     0
2   marcus     1
3     paul     2