繁体   English   中英

根据特定列上的特定值计算不同的值

[英]Count Distinct Values Based on Certain Values on Certain Column

我有一个看起来像这样的熊猫数据框:

姓名 类别 状态
约翰 学生 是的
员工
以利亚 学生
安妮 学生 是的
艾丽 员工

我想计算状态为“是”的每个类别的数量

我尝试了以下 2 个代码:

  1. (DataFrame['status'].eq('yes').groupby(DataFrame['category']).nunique())
  2. (DataFrame['status'].eq('yes').groupby(DataFrame['category']).any().sum())

两个代码给出相同的输出:

类别

学生 2

员工 1

但是,这是我期望的输出

类别

学生 2

员工 0

你能帮我解决这个问题吗?

如果需要计算True的值需要汇总sum ,因为True的处理方式类似于1False的处理方式类似于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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM