首页 > 解决方案 > 根据多个条件创建计数列

问题描述

我有一个看起来像的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 条记录。

标签: pandas

解决方案


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

推荐阅读