我使用过groupby,如下所示,但不起作用:
df={ 'id' :[1,1, 2,2, 3], 'testname' : ['math', 'science', 'math', 'literature', 'math'], 'result' :['passed', 'failed', 'passed', 'passed', 'failed'}
ndf=df.groupby(['id', 'testname']) ['result']. count()
数据帧示例:
Id testname. result
1. math. passed
1. science. failed
2. math. passed
2. literature. passed
3. math. failed
基于条件:count+=1,如果id是通过他参加的所有考试,则count=0。你知道吗
因此,输出应如下所示:
预期产量: 获取总值->;总及格学生数为1。你知道吗
看来你是在统计没有任何考试不及格(通过所有考试)的学生人数。你的分组方法是对的……但我不知道你为什么要按
id
和testname
分组。你知道吗有时,在这些类型的问题中,如果您正在寻找“没有任何负面结果的问题”,您可以更轻松地计算出有任何负面结果的问题,并从原始数据集大小中减去这些结果。以下是一种方法:
注意:你当然可以把这些东西连在一起,我只是为了清楚起见把它们拆开了。你知道吗
如果序列中的所有条目都等于“passed”,则下面的函数返回True。换句话说,如果学生至少一次没有“通过”,则返回False。你知道吗
最后,将函数应用于每个学生(id),以查看哪些学生通过了所有考试。你知道吗
你也可以直接对这个系列求和,得到通过所有考试的学生数
相关问题 更多 >
编程相关推荐