首页 > 解决方案 > 结合 nunique 和 where in pandas

问题描述

我试图为每个 id 找到:等于 0.0 且大于 0.0 的值的数量

输入 DF:

ID .   value
1 .     0.0
1 .    10.0
1 .    30.0
1 .     0.0
1 .     25.0 
2 .     0.0
2 .     4.0
2 .     0.0
2 .     13.0

输出DF:

id .    count (value = 0.0) .   count(value > 0.0)
1             2                      3
2 .           2                      2

代码:

df.groupby("ID")["value"].nunique()

它只返回每个 ID 的唯一值的数量,我不知道如何在该命令中组合这个 if-else of (0.0 and value>0.0)。请有任何建议

标签: pandaspandas-groupby

解决方案


你可以做

pd.crosstab(df.ID,df.value.gt(0))
Out[392]: 
value  False  True 
ID                 
1          2      3
2          2      2

推荐阅读