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

如何用Pandas实现两个DataFrame按取最小值规则合并更新

解决方案

方法1:concat+分组取最小值(最简洁)

这是实现需求的最简方案,逻辑直接匹配规则要求:

import pandas as pd

# 定义示例DataFrame
df1 = pd.DataFrame({
    'Key':('A','B','C'),
    'Value':(25,30,45),
})

df2 = pd.DataFrame({
    'Key':('A','B','C','D'),
    'Value':(35,25,45,60),
})

# 核心实现代码
result = pd.concat([df1, df2]).groupby('Key', as_index=False)['Value'].min()
print(result)

输出结果:

Key  Value
0   A     25
1   B     25
2   C     45
3   D     60

逻辑说明:

  • 先用pd.concat([df1, df2])将两个DataFrame纵向拼接,所有Key(包括仅在单个表存在的Key)都会被完整保留
  • 按Key字段分组后对Value取最小值:共有的Key会自动取两个Value的较小值,单个表独有的Key分组后只有一个值,取min的结果就是原值,无需额外处理

方法2:外连接后计算最小值(可选)

如果你习惯用merge语法也可以用外连接实现,效果完全一致:

import pandas as pd
import numpy as np

merged_df = df1.merge(df2, on='Key', how='outer', suffixes=('_df1', '_df2'))
merged_df['Value'] = np.minimum(merged_df['Value_df1'], merged_df['Value_df2'])
result = merged_df[['Key', 'Value']]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:36:01