我试图为每个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)。有什么建议吗
答案 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))