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
因此对于 2020 年 1 月 1 日,有 3 条记录未设置为 0,因此对于日期等于 2020 年 1 月 1 日的计数列的每条记录,将返回 3 条记录。
解决方案
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
推荐阅读
- python - 循环后小数消失
- angular - Angular *ngFor 由一个单一的结构指令组成?还是两个?
- python - 如何定期在 Player 和 Model 操纵杆输入之间切换?
- sql - SQL 加入 2 行并与 GROUP BY 求和
- visual-studio-code - VSCode Extension - How to refer to workspace settings' configuration in "when" clause of contributes.menus
- service - 网站使用端口 TCP 32767 和端口 TCP 32768
- c - 从右到左从整数中减去数字
- javascript - 如何仅在文档 Firestore 中显示具有相同 uid 的用户
- mysql - 从mysql中的同一个表复制行但改变某些列
- html - 如何在对象中放置 HTML 标签?