在列表中追加元素以转换为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 条评论
登录 后参与评论

相关文章

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

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

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

有没有什么简单的方法可以在列表中的列表中添加元素以使列表中的所有列表具有相同数量的元素?

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

在列表中添加元素

如何在二维列表中添加元素以再派生一个数组?

在列表上追加元素-javascript

Kotlin - 在地图的列表中追加元素 - 预期列表<对象>,发现列表<Kotlin.Unit>

遍历 json 元素以获取值列表

在列表中的元素之间添加元素

通过引用传递图形(列表列表)作为参数,我想向每个列表中添加元素以仅在此函数内使用

在powershell脚本块中向数组添加元素将数组转换为字符串

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

无法在列表中添加元素

无法在python列表中附加元素

在集合列表中添加元素

在列表Python中添加元素

在列表中添加元素值

在python列表中添加/添加元素

使用 json_normalise 扁平化 JSON 文件并选择特定元素以转换为 Excel 表(附示例)

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

将每个元素的列表转换为JSON对象

在列表向量中的单个/多个列表中添加元素

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

异步追加元素

JS追加元素

追加元素后,事件单击在jquery中的追加元素上不起作用

在列表中添加元素会删除先前的元素