结合nunique和熊猫在哪里

时间:2018-07-02 20:49:13

标签: pandas pandas-groupby

我试图为每个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(0.0和value> 0.0)。有什么建议吗

2 个答案:

答案 0 :(得分:3)

您可以使用

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

答案 1 :(得分:0)

尝试一下:

df['equal'] = df.groupby('ID').apply(lambda x: sum(x==0))
df['greater'] = df.groupby('ID').apply(lambda x: sum(x>0))