Python Pandas 按条件合并行、保留col_a唯一值的实现问询
方案1:groupby聚合(仅需保留col_a、col_b时使用)
利用字符串比较"Yes" > "No"为True的特性,分组后直接对col_b取最大值即可完全匹配规则,一行代码实现且无额外临时列:
import pandas as pd # df为你的原始DataFrame res = df.groupby('col_a', as_index=False)['col_b'].max()
方案2:排序+去重(需要保留原表其他列时使用)
如果你的表除了col_a、col_b外还有其他字段需要保留,可以先排序让每个col_a分组下的Yes排在最前,再按col_a去重保留第一条即可:
# 按col_a升序、col_b降序排序,保证Yes行在每个分组的最前 res = df.sort_values(by=['col_a', 'col_b'], ascending=[True, False]).drop_duplicates('col_a', keep='first')
两种方案都不需要创建额外的临时计算列,运行效率也远高于逐行判断的实现。
内容的提问来源于stack exchange,提问作者finethen
相关产品推荐
相关产品推荐

