gpt4 book ai didi

Python - 每个日期和月份的所有非零列的计数 PANDAS

转载 作者:行者123 更新时间:2023-11-30 21:59:42 25 4
gpt4 key购买 nike

我有这个数据框,我想要每月、日期和电子邮件交互的所有非零值的计数

    DATE    LOC      EMAIL         INTERATION
1/11 INDIA qw@mail.com 0
1/11 INDIA ap@mail.com 11
1/11 LONDON az@mail.com 2
2/11 INDIA qw@mail.com 5
2/11 INDIA rw@mail.com 5
2/11 LONDON az@mail.com 0
3/11 LONDON az@mail.com 1

所以我生成的数据框应该如下所示:

    DATE    LOC        INTERATION
1/11 INDIA 1
1/11 LONDON 1
2/11 INDIA 2
2/11 LONDON 0
3/11 LONDON 1

提前致谢

最佳答案

使用groupbyaggnumpy.count_nonzero :

df1 = df.groupby(['DATE','LOC'], as_index=False)['INTERATION'].agg(np.count_nonzero)
print (df1)
DATE LOC INTERATION
0 1/11 INDIA 1
1 1/11 LONDON 1
2 2/11 INDIA 2
3 2/11 LONDON 0
4 3/11 LONDON 1

另一个解决方案是通过 compre by not equal by ne 创建 bool 掩码,转换为整数并聚合 sum:

df1 = (df.assign(INTERATION = df['INTERATION'].ne(0).astype(int))
.groupby(['DATE','LOC'], as_index=False)['INTERATION']
.sum())

如果也需要按列EMAIL分组:

df2 = df.groupby(['DATE','LOC','EMAIL'], as_index=False)['INTERATION'].agg(np.count_nonzero)
print (df2)
DATE LOC EMAIL INTERATION
0 1/11 INDIA ap@mail.com 1
1 1/11 INDIA qw@mail.com 0
2 1/11 LONDON az@mail.com 1
3 2/11 INDIA qw@mail.com 1
4 2/11 INDIA rw@mail.com 1
5 2/11 LONDON az@mail.com 0
6 3/11 LONDON az@mail.com 1

关于Python - 每个日期和月份的所有非零列的计数 PANDAS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54515882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com