示例 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 是重复的,则在 Match1 到 Match5 列中的 ID 计数
Yes
中,以“Yes”较大者为准,为那个输入Clear
和Unclear
另一个(Example ID 3 & 4如果 ID 是重复的,则在 Match1 到 Match5 列中的 ID 计数
Yes
,如果它们具有相同的“Yes”,则在两者中输入Unclear
(示例编号 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')
关于python - 匹配一个 ID 中多个列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54888248/