在列表中追加元素以转换为JSON

卢卡斯

我正在编写一个读取xlxs文件并将其转换为JSON的工具。我正在使用python 3和0.23.0版本的pandas。这是我的代码从xlxs读取的数据:

id     label        id_customer     label_customer    part_number 

6     Sao Paulo      CUST-99992         Brazil          7897

6     Sao Paulo      CUST-99992         Brazil          1437

92    Hong Hong      CUST-88888         China           785

=================================

这是我的代码:

import pandas as pd
import json

file_imported = pd.read_excel('testing.xlsx', sheet_name = 'Plan1')

list_final  = []
for index, row in file_imported.iterrows():
    list1 = []
    list_final.append ({
        "id"       : int(row['id']),
        "label"    : str(row['label']),
        "Customer" : list1
        })

    list2 = []
    list1.append ({
       "id"       : str(row['id_customer']) ,
       "label"    : str(row['label_customer']),
       "number"   :  list2
       })

    list2.append({
        "part"    : str(row['part_number'])  
       })      

print (list_final)

with open ('testing.json', 'w') as f:
    json.dump(list_final, f, indent= True)

=================================

我的代码正在运行,这是我得到的输出:

[
 {
  "id": 6,
  "label": "Sao Paulo",
  "Customer": [
   {
    "id": "CUST-99992",
    "label": "Brazil",
    "number" : [
    {
    "part": "7897"
    }
    ]
   }
  ]
 },
 {
  "id": 6,
  "label": "Sao Paulo",
  "Customer": [
   {
    "id": "CUST-99992",
    "label": "Brazil",
    "number" : [
    {
    "part": "1437"
    }
    ]
   }
  ]
 },
 {
  "id": 92,
  "label": "Hong Hong",
  "Customer": [
   {
    "id": "CUST-88888",
    "label": "China",
    "number" : [
    {
    "part": "785"
    }
    ]
   }
  ]
 }
]   

=================================

我需要这样的东西:

[
 {
  "id": 6,
  "label": "Sao Paulo",
  "Customer": [
   {
    "id": "CUST-99992",
    "label": "Brazil",
    "number" : [
    {
    "part": "7897"
    },
    {
    "part": "1437"
    }
    ]
   }
  ]
 },
 {
  "id": 92,
  "label": "Hong Hong",
  "Customer": [
   {
    "id": "CUST-88888",
    "label": "China",
    "number" : [
    {
    "part": "785"
    }
    ]
   }
  ]
 }
]

=================================

我在这里搜索其他主题或任何有用的材料,但尚未找到。这只是我的代码和excel文件的一部分(它们太大了,无法在此处发布)。我相信我必须先使用'if'语句来验证每一行中的内容,然后才能将其添加到json中,但是idk怎么做。

我可以在'list_final'里面有很多带有不同内容的'Customer'和'number'列表(这就是为什么我这样创建Excel的原因)

有人可以帮我吗?

拉斐尔·费雷拉

试试这个代码。我基于您的数据是熊猫数据框开始的。

def part(value):
    data = value.split("#")
    part_list = []
    for elements in data:
        part_list.append({"part" : elements})
    return part_list


path = yourpath
data = pd.read_excel(path)
data["part_number"] = data["part_number"].apply(lambda x: str(x))
data = data.groupby(["id", "label", "id_customer", "label_customer"], as_index=False).agg("#".join)
data["part_number"] = data["part_number"].apply(lambda x: part(x))
data = data.rename(columns={"id_customer": "Customer", "part_number": "number"})
data["label_customer"] = data["label_customer"].apply(lambda x: {"label": x})
data["Customer"] = data["Customer"].apply(lambda x: {"id": x})
data["number"] = data["number"].apply(lambda x: {"number": x})
data["Customer"] = data.apply(lambda x: [{**x["Customer"], **x["label_customer"], **x["number"]}], axis=1)
data = data[["id", "label", "Customer"]]
data.to_json(path_you_want, orient="records")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

来自分类Dev

追加元素以列出并从另一个元素中删除

来自分类Dev

如何在列表中的列表中追加元素?

来自分类Dev

在python列表中追加元素时如何检查元素?

来自分类Dev

在Bash数组中添加元素以供以后打印

来自分类Dev

在列表中添加元素

来自分类Dev

在特定位置打包/追加元素以创建元组

来自分类Dev

无法在python列表中附加元素

来自分类Java

在集合列表中添加元素

来自分类Dev

在此列表中,为什么追加元素后重复?

来自分类Dev

JS追加元素

来自分类Dev

将列表中的单个列表元素转换为包含列表中的多个元素(就地)

来自分类Java

通过列表迭代器在子列表中添加元素

来自分类Dev

如何在元素中添加元素以及如何在javascript中测试复杂对象中值的存在?

来自分类Java

将列表中的元素转换为字符串

来自分类Dev

将列表中的元素转换为二进制

来自分类Dev

将嵌套列表中的所有元素转换为整数

来自分类Java

将平面列表元素转换为Java中的嵌套集合

来自分类Dev

将列表中的每个元素转换为键值对

来自分类Dev

将“大列表”的每个元素转换为R中的矩阵

来自分类Dev

在列表中顺序选择几个元素以进行循环调度

来自分类Dev

如何传递列表元素以在R中建模?

来自分类Dev

无法将JSON列表转换为Flutter中的照片列表

来自分类Dev

在R中的for循环中向列表中添加元素

来自分类Dev

如何在R中的列表中添加元素(循环)

来自分类Dev

在R中的列表中添加元素的最快方法

来自分类Dev

追加元素在IE11中不起作用

来自分类Dev

使用appendchild属性在div中追加元素

来自分类Dev

迭代元素以创建列表

来自分类Dev

从Json中获取元素以在Picker中输入

TOP 榜单

热门标签

归档