#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