You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对DataFrame按重复doc_id分组并按tfidf值排序?

DataFrame分组后隐藏重复ID+组内TF-IDF排序解决方案

问题描述

原始DataFrame数据:

doc_id  term_candidate  tfidf
0   1240600489869402113 space           0.057618
1   1240600489869402113 capacity        0.057618
2   1240600489869402113 idea            0.057618
3   1340608455992815617 priority        0.064477
4   1340608455992815617 typical dates   0.064477
5   1340608455992815617 hope            0.064477

期望输出效果:分组后同一doc_id仅在首行显示,其余行留空,且每个组内按tfidf排序:

doc_id  term_candidate  tfidf
1240600489869402113 space           0.057618
                    capacity        0.057618
                    idea            0.057618
1340608455992815617 priority        0.064477
                    typical dates   0.064477
                    hope            0.064477

实现步骤

1. 组内按TF-IDF排序

先对DataFrame按doc_id分组,再对每组内的tfidf值排序(示例为降序,若需升序去掉ascending=False):

# 先排序:按doc_id升序,tfidf降序
df_sorted = df.sort_values(by=['doc_id', 'tfidf'], ascending=[True, False])

2. 隐藏重复的doc_id

创建副本,将同一组内重复的doc_id替换为空字符串,仅保留每组首行的ID:

df_formatted = df_sorted.copy()
# 仅保留首次出现的doc_id,后续重复项设为空
df_formatted['doc_id'] = df_formatted['doc_id'].where(~df_formatted['doc_id'].duplicated(), '')

3. 格式化输出(保证列对齐)

使用to_string方法打印,去掉索引并保持列对齐:

print(df_formatted.to_string(index=False))

注意事项

  • 该操作仅用于可视化展示,如果后续需要基于doc_id做数据计算,不要修改原DataFrame,始终操作副本。
  • 若tfidf值相同,排序后顺序由原DataFrame的行序决定,可额外添加排序字段(如term_candidate)来控制顺序。

内容的提问来源于stack exchange,提问作者Omnia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 09:27:26