我有一个 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 条记录。
答案 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