#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