python - Pandas groupby 和对数据集的判断
问题描述
我有一个数据框,其中某些行被分类为“通过”或“失败”。我试图根据项目通过/失败的次数对项目做出总体判断。
熊猫 23.4 版
给定以下df:
*注意:存在其他几列,但为此目的,只有这两列很重要
Name Judgement
A Pass
A Fail
A Fail
A Pass
X Pass
X Pass
Z Pass
Z Pass
Z Fail
F Pass
为了做出总体判断,我们查看每个项目通过/失败的次数。出现两次以上的项目只有在(# of pass == # of fail)的情况下才能判断为“总体通过”。曾经发生的项目无需进一步判断。
以下输出:
Name Judgement
A Pass
X Pass
Z Fail
F Pass
注意A
通过,因为它有 2 个通过和 2 个失败,所以 2/2 = 1 ==通过
Z
失败,因为它有 2 次通过和 1 次失败,所以 2/1 = 2 ==失败
我的想法:
df['Name']
在加入的同时进行 groupbyJudgement
并简单地计算每个名称的每种判断类型出现的次数。有没有更清洁的方法来做到这一点?这个想法似乎有点麻烦,但这是我能想到的。
解决方案
这是我的方法:
new_df = df.Judgement.eq('Pass').groupby(df['Name']).agg({'size','mean', 'max'})
is_passed = ( # check those with more than two counts
(new_df['mean'].eq(0.5) & new_df['size'].gt(2))
# those with one or two counts pass if they have a pass
| (new_df['size'].le(2) & new_df['max'])
)
产生:
Name
A True
F True
X True
Z False
dtype: bool
等效地,我们可以这样做:
is_passed = np.where(new_df['size'].le(2), new_df['max'] , new_df['mean'].eq(0.5))
你可以np.where
用来掩盖pass
,fail
:
np.where(is_passed, 'pass', 'fail')
推荐阅读
- typo3 - TYPO3 的错误集成
- c# - 多对零或一对关系
- javascript - 更改 GraphQL 响应的结构
- javascript - 无法使用 Fetch API 显示来自承诺的值
- python - 将串行数据输出保存到每小时文件python
- kubernetes - 在 localhost 上的 k8s 中公开集群
- python - 有没有办法使用预训练的 doc2vec 模型来评估一些文档数据集
- r - R如何知道来自给定数据帧的什么样的数据被视为一个因素?
- spring-boot - 与 Spring 数据 JPA 的多表关联
- python - 读取我的excel文件时如何修复在最左侧添加的空白列?