如何为pandas汇总后的商品表匹配添加对应Hs code列值
Pandas 给商品求和结果匹配对应Hs Code实现方法
你可以根据自己当前的数据处理进度,选下面两种方案里的一种即可:
- 方案1:分组求和阶段直接带出Hs Code(效率最高,推荐)
同一款商品对应的Hs Code是固定唯一值,你在做groupby聚合的时候,除了对元素列做求和,直接同步取对应Hs Code即可,不用后续二次关联。
示例代码:import pandas as pd # df是你的原始DataFrame,把下面字段名替换成你表中实际的字段名即可 # 假设你用来区分商品的分组字段是「商品名称」 agg_result = df.groupby("商品名称", as_index=False).agg( # 所有需要求和的元素列都按这个格式写,列名替换成你实际的元素列名 碳元素总和=("碳元素", "sum"), 铝元素总和=("铝元素", "sum"), 铁元素总和=("铁元素", "sum"), # 直接取同商品对应的Hs Code,同商品编码唯一取第一个即可 Hs_Code=("Hs code", "first") ) - 方案2:对已经生成的求和结果表做关联匹配
如果你已经提前算好了每个商品的元素求和结果(结果表命名为sum_df,仅包含商品字段和各元素求和值),可以先从原始表提取商品和Hs Code的唯一映射,再做左连接匹配:# 提取商品和Hs Code的唯一对应关系,去重避免关联时出现重复行 hs_map = df[["商品名称", "Hs code"]].drop_duplicates(subset="商品名称", keep="first") # 把Hs Code关联到已有的求和结果表 final_result = sum_df.merge( hs_map, on="商品名称", # 关联字段和你分组用的商品字段保持一致 how="left" )
校验提示:如果运行后发现结果表行数比你之前的求和结果表行数多,说明存在同一个商品对应多个不同Hs Code的异常数据,可以先用
df.groupby("商品名称")["Hs code"].nunique()筛选出nunique()>1的商品先做数据清洗,再跑匹配逻辑。
内容的提问来源于stack exchange,提问作者darklord321
相关产品推荐
相关产品推荐

