[英]Count Distinct Values Based on Certain Values on Certain Column
我有一个看起来像这样的熊猫数据框:
姓名 | 类别 | 状态 |
---|---|---|
约翰 | 学生 | 是的 |
简 | 员工 | 不 |
以利亚 | 学生 | 不 |
安妮 | 学生 | 是的 |
艾丽 | 员工 | 不 |
我想计算状态为“是”的每个类别的数量
我尝试了以下 2 个代码:
(DataFrame['status'].eq('yes').groupby(DataFrame['category']).nunique())
(DataFrame['status'].eq('yes').groupby(DataFrame['category']).any().sum())
两个代码给出相同的输出:
类别
学生 2
员工 1
但是,这是我期望的输出:
类别
学生 2
员工 0
你能帮我解决这个问题吗?
如果需要计算True
的值需要汇总sum
,因为True
的处理方式类似于1
而False
的处理方式类似于0
:
s = (DataFrame['status'].eq('yes').groupby(DataFrame['category']).sum())
print (s)
category
employee 0
student 2
Name: status, dtype: int64
如果聚合nunique
在第一个True, False
返回2
,在第二个No
返回1
(第二组没有Yes
)。
为了测试检查每个组的唯一值:
print ((DataFrame['status'].eq('yes').groupby(DataFrame['category']).unique()))
category
employee [False]
student [True, False]
Name: status, dtype: object
如果使用any
它测试每组是否至少有一个True
,那么输出是不同的:
print ((DataFrame['status'].eq('yes').groupby(DataFrame['category']).any()))
category
employee False
student True
Name: status, dtype: bool
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.