python - 匹配 ID 中多个列的值
问题描述
样本 DF:
ID Match1 Match2 Match3 Match4 Match5
1 Yes No Yes Yes Yes
2 Yes No Yes Yes No
2 Yes No No Yes Yes
3 No Yes Yes Yes No
3 No Yes No No No
4 Yes No Yes No No
4 Yes No Yes Yes Yes
预期的DF:
ID Match1 Match2 Match3 Match4 Match5 Final_Match
1 Yes No Yes Yes Yes Clear
2 Yes No Yes Yes No Unclear
2 Yes No No Yes Yes Unclear
3 No Yes Yes Yes No Clear
3 No Yes No No No Unclear
4 Yes No Yes No No Unclear
4 Yes No Yes Yes Yes Clear
问题陈述:
- 如果 ID 是非重复的,只需放在
Clear
列中Final_Match
(示例 ID 1) 如果 ID 是重复的,则
Yes
在 Match1 到 Match5 列中的 ID 计数内,以该列和另一列的“是”较大者为准Clear
(Unclear
示例 ID 3 和 4如果 ID 是重复的,则
Yes
在 Match1 到 Match5 列中的 ID 计数内,如果它们Unclear
在两个列中都有相同的“是”(示例 ID 2)
我找不到任何关于如何在 ID 中解决的问题?
解决方案
您也可以使用以下方法实现此目的Groupby.rank
:
# Helper Series
s = (df.replace({'Yes': 1, 'No': 0})
.iloc[:, 1:]
.sum(1))
df['final_match'] = np.where(s.groupby(df['ID']).rank(ascending=False).eq(1), 'Clear', 'Unclear')
推荐阅读
- html - 如何根据列的大小缩小行宽 - Bootstrap
- junit - kafka的集成测试用例
- vb.net - sendkeys.Send - 运行多次后突然失败 - 错误 - 访问被拒绝 - RDP .net
- performance - 如何提高嵌套循环的速度/寻找更高效的代码
- pandas - 选择其值正常的列
- kibana - Kibana Query 获取发生次数
- html - 在纯 CSS 悬停上加宽时图像闪烁
- reactjs - 如何在使用 Typescript 时添加样式组件作为对象文字的属性?
- neural-network - Julia Flux.Dense 初始条件
- javascript - 使用 Moment.js 按周数获取一周中的所有天