如何在Pandas合并DataFrame时匹配对应分组的最低Price?
解决方案
你可以先对df1按分组字段聚合出每组的最低价格,再和原df合并,这样既保留df的所有行,又能匹配到对应分组的最低Price,同时不会修改原始的df1数据。
步骤1:生成仅包含最低价格的临时DataFrame
先对df1按Origin、Destination、Service分组,提取每组的最低Price:
# 生成分组后保留最低Price的临时表,不修改原df1 df1_min_price = df1.groupby(['Origin', 'Destination', 'Service'], as_index=False)['Price'].min()
步骤2:用临时表和原df合并
用这个临时表和df做左合并,就能得到想要的结果:
df2 = pd.merge(df, df1_min_price, how='left', on=['Origin', 'Destination', 'Service'])
结果说明
- 原
df的所有行都会被保留,不会因为df1的重复行产生额外的重复记录 - 每个分组匹配到的是
df1中的最低Price - 原始
df1的数据完全保留,不影响后续使用
内容的提问来源于stack exchange,提问作者Fold_In_The_Cheese
相关产品推荐
相关产品推荐

