将元素添加到 header

Adding to elements to a header

下面的代码转到 header 名称 Phones 并将每个元素解析为 csv 文件。为该文件夹中的每个 XML 文件完成此操作。这意味着所有这些 XML 文件中的所有 FACTS 元素都被解析为一个 CSV 文件。

这是代码

import xml.etree.cElementTree as cET
import pandas as pd
from pathlib import Path

def phones_to_df(fname):
    tree = cET.parse(fname)
    return pd.DataFrame([{**{el.tag: el.text for el in list(phone)},
                          **{f'nuk_{k}': v for k, v in phone.find('nuk').items()}}
                  for phone in tree.iterfind('Phones')])

if __name__ == '__main__':
    xmls = [f for f in Path('C:/Users/Desktop/Original/test').glob('*.xml')] 
    df = pd.concat([phones_to_df(xml) for xml in xmls])
    df.to_csv("C:/Users/Desktop/Original/all.csv")

这是 XML 文件的样子

<Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Phones>
    <Date />
    <Prog />
    <Box />
    <Feature />
    <PR>1231</PR>
    <Set>234234</Set>
    <FD>23423</FD>
    <Reno>454</Reno>
    <Simple>dfasd</Simple>
    <Nr />
    <gt>6070106091</gt>
    <Reno>1233</Reno>
    <QW>3234</QW>
    <ER />
    <VR />
    <Use />
    <Dar>sdfsd</Dar>
    <age />
    <name1>sdfsfdfs</name1>
    <Sys>Itone</Sys>
    <aac>2014</aac>
    <time>02:00</time>
    <nuk name="This is some text" text_g="asadsdas" text_h="2">fsdfsfd3432fdf</nuk>
  </Phones>

</Data>

我正在努力在此代码中实现一项新功能。我想编写代码以获取元素 PR 和元素 Reno 将它们与 _ 放在一起并解析它们第一列 header 名为 ** PLAN**

输出应该是这样的 Picture here

假设 Phones 中的节点是唯一的,您可以调整您正在构建的字典来创建添加您想要的额外列的数据框:

def phones_to_df(fname):
    tree = cET.parse(fname)
    return pd.DataFrame([{'PLAN': f'{phone.find("PR").text}_{phone.find("Reno").text}',
                          **{el.tag: el.text for el in phone},
                          **{f'nuk_{k}': v for k, v in phone.find('nuk').items()}
                          }
                  for phone in tree.iterfind('Phones')])