Pandas DataFrame清洗:拆分SKU列嵌套数据为多行得到目标表df_1
pandas 嵌套SKU列拆分清洗方案
处理逻辑
- 先统一处理SKU列的无效值(空字符串、字符串
NaN),避免JSON解析报错 - 对合法的JSON格式SKU内容做解析,提取所有
Result字段的值 - 用
explode方法将SKU列表拆分为多行 - 最终筛选保留
ID、SKU、NOTES三个目标列
完整实现代码
import pandas as pd import json # 构造原始DataFrame,若你已生成df可跳过此段 df = pd.DataFrame([[1,'NaN','abj','1/1/2021'], [2,'[{"Result":"00018"},{"Result":"00065"}]','abj','1/1/2021'], [3,'','abj','1/1/2021']], columns = ['ID','SKU','NOTES','Date']) # 自定义SKU解析函数 def parse_sku(sku_content): if sku_content in ("NaN", ""): return [""] try: sku_json = json.loads(sku_content) return [item["Result"] for item in sku_json] except: return [""] # 执行解析、拆分操作 df["SKU"] = df["SKU"].apply(parse_sku) df_1 = df.explode("SKU")[["ID", "SKU", "NOTES"]].reset_index(drop=True) # 可选:将ID转为字符串格式,匹配示例目标df_1的字段类型 df_1["ID"] = df_1["ID"].astype(str)
运行后得到的df_1与你给出的目标结构完全一致。
内容的提问来源于stack exchange,提问作者spartan123
相关产品推荐
相关产品推荐

