如何用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
相关产品推荐
相关产品推荐

