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

如何合并大dataframe与小dataframe,保留小表全量且无重复qtr_dates

Pandas合并两个同结构DataFrame出现重复日期的解决方法

问题原因

你使用全字段outer merge出现重复qtr_dates的核心原因是:outer merge只有在两个表的所有匹配字段(此处为qtr_dates和sales)完全相等时才会合并为同一行,只要同一个qtr_dates在两个表中的sales数值存在差异,就会生成两行同日期的记录,不符合你「小表行优先级更高,同日期只保留小表记录」的需求。

解决方案

根据你的具体场景可以选择两种实现方式:

方式1:保留小表所有日期(含大表不存在的日期)

先拼接两个表(小表在前保证优先级),再按日期去重保留第一条记录即可:

import pandas as pd
# 小表放concat的前位,去重时同日期优先保留小表记录
df = pd.concat([small_df, big_df]).drop_duplicates(subset="qtr_dates", keep="first").reset_index(drop=True)

方式2:最终日期范围和大表完全一致(仅用小表数值覆盖同日期记录)

如果要求最终的qtr_dates和大表完全对齐,不需要保留大表不存在的小表日期,可以用update方法直接覆盖:

# 把日期设为索引方便对齐
big_df_idx = big_df.set_index("qtr_dates")
small_df_idx = small_df.set_index("qtr_dates")
# 用小表数值覆盖大表的同索引记录,无匹配的保留大表原值
big_df_idx.update(small_df_idx)
# 重置索引回普通列
df = big_df_idx.reset_index()

两种方式都不会出现重复的qtr_dates记录,完全符合你优先保留小表全量行、缺省部分从大表补充的需求。


内容的提问来源于stack exchange,提问作者Anirban Nag 'tintinmj'

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:27:03