如何将分层Excel数据透视表转换为XML模式

2024-04-26 06:36:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一家自然历史博物馆工作,需要为我们收藏的抽屉制作标签,这些抽屉有保存标本的分类。我将每个分类单元的电子表格作为一个单独的行存储在抽屉中(意味着一个抽屉有多行),如下所示

每个抽屉中的样本分类表:

enter image description here

我创建了一个pivot表,将数据转换成一个层次树状结构,或多或少地反映了我希望配置标签的方式(见下文)

每个抽屉中分类单元的数据透视表:

enter image description here

我想创建一个反映透视表层次结构的XML文档,以便在InDesign中自动生成抽屉标签。我不太熟悉XML模式,更不熟悉如何将平面表格数据导出到XML模式

如果有Python解决方案,我很想看看你们的想法,或者有一种简单的方法可以使用Excel内置的XML exporter来实现。 非常感谢你的帮助


Tags: 数据方式模式分类标签xml结构单元
1条回答
网友
1楼 · 发布于 2024-04-26 06:36:58

您可以使用python库pandas和dicttoxml非常轻松地处理此任务

假设您将数据保存在名为data.csv的文件中。然后,您可以使用这个(有点粗糙的)代码片段将其转换为所需的xml格式:

from collections import defaultdict

import pandas as pd
from dicttoxml import dicttoxml

data = pd.read_csv("./data.csv", sep=";")

xml_dictionary = defaultdict(lambda: defaultdict(lambda: defaultdict(lambda: defaultdict(str))))

for drawer, drawer_data in data.groupby(by="Drawer"):
    for class_, class_data in drawer_data.groupby(by="Class"):
        for subclass, subclass_data in class_data.groupby(by="Subclass"):
            for suborder, suborder_data in subclass_data.groupby(by="Suborder"):
                for family, family_data in suborder_data.groupby(by="Family"):
                    xml_dictionary[drawer][class_][subclass][suborder] = family

result = dicttoxml(xml_dictionary, custom_root='Labels', attr_type=False)
open('./result.xml', 'wb').write(result)

这样,您甚至不需要使用您创建的excel数据透视表

相关问题 更多 >