我需要找到col2中的个案总和,其中对于col1(ABC)中的每个集合,col2值在col3中具有100%的时间。在这种情况下,B1& D1符合此标准,因此N = 2。支持pandas或SQL是有帮助的(两者都是理想的)。
| col1 | col2 | col3 | col4 | col5 |
|------|-------|-------|-------|-------|
| A | A1 | N | 1 | 256 |
| A | B1 | Y | 2 | 3 |
| A | C1 | N | 3 | 323 |
| B | F1 | N | 1 | 89 |
| B | B1 | Y | 2 | 256 |
| C | D1 | Y | 1 | 3 |
| D | A1 | N | 1 | 32 |
| D | C1 | Y | 2 | 893 |
答案 0 :(得分:1)
python pandas中有类似的东西
df.groupby('col2').col3.apply(lambda x : sum(x=='Y')==x.count()).sum()
Out[568]: 2
更多细节:
df.groupby('col2').col3.apply(lambda x : sum(x=='Y')==x.count())
Out[569]:
col2
A1 False
B1 True
C1 False
D1 True
F1 False
Name: col3, dtype: bool
答案 1 :(得分:1)
我不知道col1
与此有什么关系。您可以使用SQL查询执行此操作:
select count(*)
from (select col2
from t
where min(col3) = max(col3) and min(col3) = 'Y'
) t;