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

基于CODE_STD合并DataFrame,如何保留df1的58行结构?

解决DataFrame合并后行数超出预期的问题

问题原因

你使用pd.merge(..., how='outer')会保留两个DataFrame中所有CODE_STD的记录,当某一个CODE_STD在df1或df2中存在多条匹配时,会生成笛卡尔积,最终导致合并后的行数远超df1的58行。

正确合并方法

方法1:使用左连接(Left Join)

左连接会严格保留df1的所有行,仅匹配df2中对应CODE_STD的记录,无匹配的ASSET_ID2会填充为NaN,确保合并后行数与df1一致:

import pandas as pd
merged_df = pd.merge(df1, df2, on='CODE_STD', how='left')

方法2:先去重再左连接(针对df2存在重复CODE_STD的情况)

如果df2中同一个CODE_STD对应多条ASSET_ID2记录,直接左连接仍会产生重复行。此时需先对df2按CODE_STD去重,确保每个CODE_STD仅保留一条记录(示例保留首次出现的记录):

# 对df2去重,保留每个CODE_STD的第一条记录
df2_unique = df2.drop_duplicates(subset='CODE_STD', keep='first')
# 执行左连接
merged_df = pd.merge(df1, df2_unique, on='CODE_STD', how='left')

验证结果

处理后的merged_df将包含58行,同时保留ASSET_ID和ASSET_ID2两列,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 14:35:17