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

如何在Pandas中拆分Shopify订单数据的字典列表为多行多列

拆分DataFrame中嵌套字典列表的字段(Shopify Order API数据处理)

原始数据

你的Shopify Order API返回数据整理后的简化DataFrame如下:

order_idnameitem_order
123Jon Doe[{'id':789,'price':40.0,'sku':'HAT'},{'id':790,'price':41.0,'sku':'SHIRT'}]
122Jonah Doe[{'id':553,'price':20.0,'sku':'CAP'}]

处理步骤

直接用Pandas就能完成拆分,步骤如下:

  1. 构造/加载原始数据(模拟你的数据)
import pandas as pd

data = {
    'order_id': ['123', '122', ''],
    'name': ['Jon Doe', 'Jonah Doe', ''],
    'item_order': [
        [{'id':789,'price':40.0,'sku':'HAT'},{'id':790,'price':41.0,'sku':'SHIRT'}],
        [{'id':553,'price':20.0,'sku':'CAP'}],
        []
    ]
}
df = pd.DataFrame(data)
  1. 过滤空行
    先把无有效订单ID的空记录去掉:
df = df[df['order_id'].str.strip() != ''].reset_index(drop=True)
  1. 拆分商品列表
    用explode把每个订单里的商品字典拆成单独一行:
df_exploded = df.explode('item_order', ignore_index=True)
  1. 展开字典为列
    用json_normalize把字典格式的商品信息展开成单独列,同时给列名加上item_order.前缀:
from pandas import json_normalize

df_items = json_normalize(df_exploded['item_order']).add_prefix('item_order.')
  1. 合并数据
    把原数据(去掉item_order列)和展开后的商品列合并:
final_df = pd.concat([df_exploded.drop('item_order', axis=1), df_items], axis=1)

最终结果

处理后得到的DataFrame格式如下:

order_idnameitem_order.iditem_order.priceitem_order.sku
123Jon Doe78940.0HAT
123Jon Doe79041.0SHIRT
122Jonah Doe55320.0CAP

注意事项

如果你的item_order字段是字符串格式(不是已解析的列表字典),需要先转成Python对象:

import ast
df['item_order'] = df['item_order'].apply(lambda x: ast.literal_eval(x) if x.strip() != '' else [])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:55:27