Pandas按字符串而非时间格式分组取每组最大值并避免多级索引
解决方案
你可以在现有代码的末尾追加以下代码实现需求,两种方案均不会生成多级索引,输出列名与你预设的merged_frame列完全一致:
方案1:排序去重法(最简洁,适合绝大多数场景)
# 按相似度得分降序排序,同一供应商的最高得分行自动排在分组最前 merged_frame_sorted = merged_frame.sort_values(by='Similarity', ascending=False) # 按供应商名称去重,保留每组第一行即最高得分行,同时重置索引消除原有行号 result_df = merged_frame_sorted.drop_duplicates(subset='Supplier name', keep='first').reset_index(drop=True)
方案2:组内最大值索引法(适合需要保留全部同分最高得分行的场景)
如果同一个供应商存在多条相似度得分相同的最高记录,需要全部保留可以用该方案:
# 按供应商分组,取每个组内相似度最高的行索引 max_sim_idx = merged_frame.groupby('Supplier name')['Similarity'].idxmax() # 根据索引提取对应行后重置索引 result_df = merged_frame.loc[max_sim_idx].reset_index(drop=True)
如果需要调整输出列的顺序/筛选指定列,直接在最终结果上按需求取列即可,示例:
# 按你需要的列顺序调整列表内的列名即可 result_df = result_df[["Supplier name","Street_y","Similarity","Streetnumber"]]
内容的提问来源于stack exchange,提问作者SMS
相关产品推荐
相关产品推荐

