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

如何基于items列匹配并比较score值合并两个Pandas DataFrame

解决方案

先给两个DataFrame添加来源标识列,再合并数据集,最后按items分组保留score最高的行,具体步骤如下:

1. 构建并标记原始数据

import pandas as pd

# 构建df1并添加来源标记
df1 = pd.DataFrame({
    'sample': ['a', 'b', 'c'],
    'items': ['p1', 'p2', 'p3'],
    'score': [0.9, 0.8, 0.6]
})
df1['df_name'] = 'df1'

# 构建df2并添加来源标记
df2 = pd.DataFrame({
    'sample': ['d', 'e', 'f'],
    'items': ['p2', 'p3', 'p4'],
    'score': [0.75, 0.7, 0.65]
})
df2['df_name'] = 'df2'

2. 合并并筛选目标行

# 合并两个DataFrame
combined_df = pd.concat([df1, df2])

# 按score降序排序,保留每个items组中score最大的行
result_df = combined_df.sort_values('score', ascending=False).drop_duplicates('items').sort_index()

# 调整列顺序,匹配期望输出格式
result_df = result_df[['sample', 'items', 'score', 'df_name']]

最终输出

执行上述代码后,result_df的内容与期望一致:

sample items  score df_name
0      a    p1    0.9     df1
1      b    p2    0.8     df1
4      e    p3    0.7     df2

关键逻辑说明

  • 提前添加df_name列,确保合并后能追溯数据来源
  • 降序排序后用drop_duplicates('items'),可以高效保留每个items对应的最高分记录
  • 最后调整索引和列顺序,让输出格式完全匹配需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:25:24