如何按SKU匹配两个DataFrame,将第一个的Quantity值同步到第二个对应行
基于SKU匹配覆盖DataFrame的Quantity列实现方案
实现思路
- 以DataFrame1的SKU列为键、Quantity列为值构建映射字典
- 用DataFrame2的SKU列匹配映射字典,直接替换对应Quantity列的值,其他列数据不受影响
完整实现代码
import pandas as pd # 构造示例DataFrame1 df1 = pd.DataFrame({ 'SKU': ['A', 'B', 'C', 'D'], 'Quantity': [3, 4, 5, 6], 'Title': ['Scissors', 'Cable', 'Goat', 'Cheese'] }) # 构造示例DataFrame2 df2 = pd.DataFrame({ 'SKU': ['A', 'B', 'C', 'D'], 'Quantity': [1, 2, 1, 2], 'Title': ['Blue Scissors', 'Red Cables', 'Fat Goat', 'Smelly Cheese'] }) # 构建SKU到Quantity的映射字典 sku_qty_map = df1.set_index('SKU')['Quantity'].to_dict() # 替换df2的Quantity列 df2['Quantity'] = df2['SKU'].map(sku_qty_map) # 可选:如果df2存在df1没有的SKU,想要保留原有Quantity值,可改用以下写法 # df2['Quantity'] = df2['SKU'].map(sku_qty_map).fillna(df2['Quantity'])
执行后df2的输出结果
SKU Quantity Title 0 A 3 Blue Scissors 1 B 4 Red Cables 2 C 5 Fat Goat 3 D 6 Smelly Cheese
注意事项
- 若DataFrame1中存在重复SKU,需先对SKU做去重处理,按需对Quantity执行聚合(求和、取均值、取最新值等)后再构建映射字典,避免映射值异常。
内容的提问来源于stack exchange,提问作者Stevenson
相关产品推荐
相关产品推荐

