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

如何用Pandas通过Parent列填充变体产品的Category字段?

非循环填充变体产品的分类信息

问题场景

  • 处理包含三类产品的DataFrame:常规产品(Simple)、可变产品(Variable)、变体产品(Variation)
  • 变体产品的Category字段为空,Parent字段关联父产品的SKU
  • 需要用非循环方式将父产品的Category值批量填充到对应变体中

解决方案

核心思路是先构建父产品SKU到分类的映射关系,再通过矢量化操作批量填充,完全避免循环:

修改后的完整代码

import pandas as pd

def get_data():
    fields = ['ID', 'SKU', 'Name', 'Category', 'Type', 'Parent']
    data = pd.read_csv('input/products.csv', skipinitialspace=True, usecols=fields)
    
    # 构建父产品SKU -> Category的映射(仅包含有分类的父产品)
    parent_category_map = data[data['Type'].isin(['Simple', 'Variable'])].set_index('SKU')['Category']
    
    # 填充变体产品的空Category:优先保留原有值,空值用Parent匹配映射填充
    data['Category'] = data['Category'].combine_first(data['Parent'].map(parent_category_map))
    
    return data

代码说明

  1. 构建映射字典:筛选出所有具备分类信息的父产品(Simple和Variable类型),以SKU为索引创建分类映射,确保后续可以通过父SKU快速查找分类。
  2. 批量填充:使用combine_first方法,对Category字段的空值进行填充——通过Parent列匹配映射字典中的分类值,非空值保持不变。
  3. 效率优势:所有操作均为Pandas矢量化运算,比循环遍历快几个数量级,适合处理大规模数据集。

验证效果

针对示例CSV数据,运行后:

  • GFP002A和GFP002B的Category会被填充为Cleaning supplies(对应父产品GFP002的分类)
  • AV002A因Parent指向的GFP001A不存在于父产品列表中,Category仍为NaN(符合逻辑)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:42:40