Создайте столбец подсчета на основе нескольких критериев

#pandas

Вопрос:

У меня есть df, который выглядит так:

           date  value
0   01/01/2020      2
1   01/01/2020      3
2   01/01/2020      0
3   01/01/2020      4
4   02/01/2020      1
5   02/01/2020      3
6   02/01/2020      8
7   02/01/2020      4
8   03/01/2020      0
9   03/01/2020      0
10  03/01/2020      1
11  03/01/2020      0
 

Как мне создать еще один столбец, который содержит значение, не равное нулю, и имеет ту же дату. Мой желаемый результат будет выглядеть так:

           date  value   count
0   01/01/2020     -2       3
1   01/01/2020      3       3
2   01/01/2020      0       3
3   01/01/2020      4       3
4   02/01/2020      1       4
5   02/01/2020     -3       4
6   02/01/2020      8       4
7   02/01/2020      4       4
8   03/01/2020      0       1
9   03/01/2020      0       1
10  03/01/2020     -1       1
11  03/01/2020      0       1
 

таким образом, для 01/01/2020 есть 3 записи, для которых не установлено значение 0, поэтому для каждой записи в столбце «количество» будет возвращено 3, где дата равна 01/01/2020.

Ответ №1:

С transform :

 df['Count_nonzero'] = df['value'].ne(0).groupby(df['date']).transform('sum')
 

 print(df)

          date  value  Count_nonzero
0   01/01/2020      2              3
1   01/01/2020      3              3
2   01/01/2020      0              3
3   01/01/2020      4              3
4   02/01/2020      1              4
5   02/01/2020      3              4
6   02/01/2020      8              4
7   02/01/2020      4              4
8   03/01/2020      0              1
9   03/01/2020      0              1
10  03/01/2020      1              1
11  03/01/2020      0              1