Python合并DataFrame:保留全部SKU并补全供应商价格
多DataFrame合并保留全SKU并填充缺失价格方案
核心思路
以包含所有SKU的df1为基准,通过**左连接(left join)**依次合并df2和df3,确保所有SKU都被保留,缺失的供应商价格自动填充为NaN,之后可按需替换为0。
具体代码实现
# 第一步:以df1为基础左连接df2,保留所有SKU,缺失价格为NaN temp_df = df1.merge(df2, on='Product SKU', how='left') # 第二步:继续左连接df3,补充供应商2的价格 df4 = temp_df.merge(df3, on='Product SKU', how='left') # 可选:重命名列名至目标格式 df4.rename(columns={ 'Price(supplier 1)': 'Supplier 1 Price', 'Price(Supplier 2)': 'Supplier 2 Price' }, inplace=True) # 可选:将NaN替换为0(不需要则跳过此行) df4.fillna(0, inplace=True)
常见问题排查
- 之前用merge/join失败,大概率是没指定
how='left',默认的内连接(inner join)会只保留双方都有的SKU,导致丢失数据; - concatenate是按行拼接,不做列匹配,完全不适用这种按SKU关联的场景;
- 如果用join,需先把
Product SKU设为所有DataFrame的索引,否则会按默认索引匹配,导致关联错误。
内容的提问来源于stack exchange,提问作者Ushir Maharaj
相关产品推荐
相关产品推荐

