如何从含多值字段的JSON对象创建自定义列名的Pandas DataFrame
实现代码
你可以通过Pandas的explode方法拆分嵌套的price字段,配合列拆分即可得到目标结构,完整代码如下:
import pandas as pd # 原始数据(注意你给出的是Python字典格式,不是标准JSON,标准JSON要求双引号且不能有注释) raw_data = { 'id': "email@gmail.com", 'item': ['abc', 1], # name, id 'supply': '23FEG', 'price': [[1, 100], [2, 150], [5, 400]], # quantity, price } # 第一步:构造包含公共字段和price列表的基础DataFrame df = pd.DataFrame([{ "email": raw_data["id"], "item_name": raw_data["item"][0], "supply": raw_data["supply"], "price_group": raw_data["price"] }]) # 第二步:将price_group按元素拆分为多行 df = df.explode("price_group", ignore_index=True) # 第三步:拆分每组price值为quantity和price两列 df[["quantity", "price"]] = pd.DataFrame(df["price_group"].tolist(), index=df.index) # 第四步:删除辅助列得到最终结果 df = df.drop(columns="price_group") # 输出查看结果 print(df)
输出效果
运行上述代码后得到的DataFrame和你要求的预期结果完全一致:
email item_name supply quantity price 0 email@gmail.com abc 23FEG 1 100 1 email@gmail.com abc 23FEG 2 150 2 email@gmail.com abc 23FEG 5 400
适配说明
就算price字段包含的数值组数量有变化,代码也可以自动适配,不需要修改逻辑。
内容的提问来源于stack exchange,提问作者geek glance
相关产品推荐
相关产品推荐

