我有一个数据框,例如:
Date B C
20.07.2018 10 8
20.07.2018 1 0
21.07.2018 0 1
21.07.2018 1 0
如何计算每个日期每列的零值和非零值?
使用.sum()
对我没有帮助,因为它会将非零值相加。
例如:零值的预期输出:
Date B C
20.07.2018 0 1
21.07.2018 1 1
我相信需要DataFrameGroupBy.agg与 比较0
and sum
:
a) 数数。零值:
df1 = df.groupby('Date').agg(lambda x: x.eq(0).sum())
print (df1)
B C
Date
20.07.2018 0 1
21.07.2018 1 1
b) 数数。非零值:
df2 = df.groupby('Date').agg(lambda x: x.ne(0).sum())
print (df2)
B C
Date
20.07.2018 2 1
21.07.2018 1 1
提高性能的另一个想法是创建DatetimeIndex
,比较列和上次使用情况sum
每个级别(日期时间索引):
df1 = df.set_index('Date').eq(0).sum(level=0)
print (df1)
B C
Date
20.07.2018 0 1
21.07.2018 1 1
df2 = df.set_index('Date').ne(0).sum(level=0)
print (df2)
B C
Date
20.07.2018 2 1
21.07.2018 1 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)