如何将指定XML数据转换为目标格式的DataFrame?
如何将指定XML转换为目标格式的DataFrame
没问题,我来帮你搞定这个需求!我们可以用Python的xml.etree.ElementTree来解析XML,再结合pandas构建符合预期的DataFrame。下面是完整的实现步骤和代码:
import xml.etree.ElementTree as ET import pandas as pd # 你的XML原始数据 xml_content = """<start> <main index='1' sub='english' > <name value='1' text='hi this is xxx' /> <name value='2' text='isnt this funny' /> </main> <main index='2' sub='french'> <name value='1' text='Comment vas-tu' /> <name value='2' text='sil vous plaît résoudre ce' /> </main> </start>""" # 解析XML字符串 root = ET.fromstring(xml_content) # 初始化存储数据的列表 records = [] # 定义main节点index到A/B的映射 index_mapping = {'1': 'A', '2': 'B'} # 遍历每个main节点及其子节点 for main_node in root.findall('main'): current_main_idx = main_node.attrib['index'] # 遍历当前main下的所有name节点 for name_node in main_node.findall('name'): records.append({ 'mainindex': index_mapping[current_main_idx], 'namevalue': name_node.attrib['value'], 'text': name_node.attrib['text'] }) # 转换为DataFrame并调整列顺序 result_df = pd.DataFrame(records)[['mainindex', 'namevalue', 'text']] # 查看结果 print(result_df)
运行后你会得到完全符合预期的DataFrame:
mainindex namevalue text 0 A 1 hi this is xxx 1 A 2 isnt this funny 2 B 1 Comment vas-tu 3 B 2 sil vous plaît résoudre ce
关键步骤说明:
- XML解析:用
ET.fromstring()直接解析XML字符串,获取根节点后,通过findall()定位所有main和name节点。 - 数据映射:通过字典
index_mapping把main节点的index属性值('1'、'2')转换成你需要的'A'、'B'。 - 数据收集:嵌套遍历节点,把每条需要的属性值组装成字典存入列表,最后用
pandas转换为DataFrame,调整列顺序匹配预期格式。
内容的提问来源于stack exchange,提问作者pylearner
相关产品推荐
相关产品推荐

