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

如何在pandas合并DataFrame时仅保留code_1的首次匹配结果?

解决方法

pd.merge() 本身没有内置参数能直接让你在合并时只保留每个code_1的首次匹配结果,但可以通过预处理右表的方式实现需求:提前对df_1做去重处理,只保留每个code_1的第一行数据,再执行左连接,就能直接得到每个code_1仅一行的匹配结果。

基础实现代码

# 先对df_1去重,保留每个code_1的首次出现条目
df_1_unique = df_1.drop_duplicates(subset=['code_1'], keep='first')
# 基于去重后的df_1执行左连接
df_merge = pd.merge(df, df_1_unique, how="left", on=['code_1'])

进阶:按优先级保留特定行

如果df_1中同一code_1的重复行有优先级(比如需要保留最新数据),可以先排序再去重:

# 假设按date列降序排序,确保最新行排在前面
df_1_sorted = df_1.sort_values(by='date', ascending=False)
# 去重保留每个code_1的第一行(即最新行)
df_1_unique = df_1_sorted.drop_duplicates(subset=['code_1'], keep='first')
# 执行左连接
df_merge = pd.merge(df, df_1_unique, how="left", on=['code_1'])

这样处理后,合并结果里每个code_1只会对应一行匹配数据,无需在合并后额外执行去重操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 15:01:00