gpt4 book ai didi

python - 添加计数器作为数据帧的索引

转载 作者:行者123 更新时间:2023-12-01 06:30:27 25 4
gpt4 key购买 nike

下面的代码获取一个包含 xml 文件的文件夹,并将它们解析为单个 csv 文件。它确实很好地完成了这项工作。

from xml.etree import ElementTree as ET
from collections import defaultdict
import csv
from pathlib import Path

directory = 'C:/Users/docs/FolderwithXMLs'

with open('output.csv', 'w', newline='') as f:
writer = csv.writer(f)

headers = ['id', 'service_code', 'rational', 'qualify', 'description_num', 'description_txt', 'set_data_xin', 'set_data_xax', 'set_data_value', 'set_data_x']

writer.writerow(headers)

xml_files_list = list(map(str,Path(directory).glob('**/*.xml')))
for xml_file in xml_files_list:
tree = ET.parse(xml_file)
root = tree.getroot()

start_nodes = root.findall('.//START')
for sn in start_nodes:
row = defaultdict(str)


for k,v in sn.attrib.items():
row[k] = v

for rn in sn.findall('.//Rational'):
row['rational'] = rn.text

for qu in sn.findall('.//Qualify'):
row['qualify'] = qu.text

for ds in sn.findall('.//Description'):
row['description_txt'] = ds.text
row['description_num'] = ds.attrib['num']


for st in sn.findall('.//SetData'):
for k,v in st.attrib.items():
row['set_data_'+ str(k)] = v
row_data = [row[i] for i in headers]
writer.writerow(row_data)
row = defaultdict(str)

输出看起来像这样

enter image description here

我一直在尝试添加一个计数器,用于记录该特定 ID 的 set_data_value 行数。输出应该如下所示

enter image description here

如果有必要,我也可以提供 xml 数据。很抱歉有人必须编辑问题才能显示图片而不仅仅是超链接

我在这里检查了其他帖子,但无法在这段代码中实现

最佳答案

如果没有看到 XML,这可能会有点猜测,但如果您将“Counter”添加到 headers 中,然后在最后一个 for 循环上添加枚举,它可能会起作用

            for counter, st in enumerate( sn.findall('.//SetData') ):
for k,v in st.attrib.items():
row['set_data_'+ str(k)] = v
row["Counter"] = counter
row_data = [row[i] for i in headers]
writer.writerow(row_data)
row = defaultdict(str)

关于python - 添加计数器作为数据帧的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59936709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com