У меня есть датафрейм, аналогичный приведенной ниже базе данных:
+------------+-----+--------+
| time | id | status |
+------------+-----+--------+
| 1451606400 | id1 | Yes |
| 1451606400 | id1 | Yes |
| 1456790400 | id2 | No |
| 1456790400 | id2 | Yes |
| 1456790400 | id2 | No |
+------------+-----+--------+
Я группирую по всем столбцам, упомянутым выше, и я могу получить счет в другом столбце с именем 'count'
, используя следующую команду:
df.groupby(['time','id', 'status']).size().reset_index(name='count')
Но я хочу, чтобы число в приведенном выше кадре данных только в тех строках с status = 'Yes'
, а остальные должны быть '0'
Желаемый вывод:
+------------+-----+--------+---------+
| time | id | status | count |
+------------+-----+--------+---------+
| 1451606400 | id1 | Yes | 2 |
| 1456790400 | id2 | Yes | 1 |
| 1456790400 | id2 | No | 0 |
+------------+-----+--------+---------+
Я пытался сосчитать status = 'Yes'
с кодом ниже:
df[df['status']== 'Yes'].groupby(['time','id','status']).size().reset_index(name='count')
, который, очевидно, дает мне эти строки с status = 'Yes'
и отбрасывает остальные. Я хочу сброшенные с count = 0
Есть ли способ получить результат?
Заранее спасибо!