根据多个条件创建计数列

时间:2021-06-21 16:06:58

标签: 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,因此对于日期等于 01/01/2020 的计数列的每条记录,将返回 3 条记录。

1 个答案:

答案 0 :(得分:2)

使用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