首页 > 编程问答 >将 XML 读入 Pandas DataFrame

将 XML 读入 Pandas DataFrame

时间:2024-08-06 15:05:42浏览次数:12  
标签:python pandas xml

只是想知道是否有人能够帮助找出我在这个 Python 脚本中出错的地方。我正在尝试阅读美国灯光列表每周更改 xml(此处找到: https://www.navcen.uscg.gov/sites/default/files/xml/lightLists/weeklyUpdates/v7d09WeeklyChanges.xml )到 Pandas 数据帧中。我不经常编程,所以我只是慢慢开始,尝试将每个援助的“地区”字段写入一个空列表。当我运行脚本时,它在“地区”列中显示“无”。如何将“District”字段输出到数据框?谢谢。

from lxml import etree
from lxml import objectify
import pandas as pd
import pandas_read_xml as pdx
import xml.etree.ElementTree as et
 
xml_file = (r'C:\Users\LAWRENCEA\Downloads\v7d09WeeklyChanges.xml')
 
parsed_xml = et.parse(xml_file)
xroot = parsed_xml.getroot()
 
df_cols = ["District"]
rows = []
 
for record in xroot.iter('dataroot'):
    for field in record.findall('Vol_x0020_07_x0020_D9_x0020_LL_x0020_corr_x0020_thru'):
        s_District = field.attrib.get('District')
        rows.append({"District": s_District})
    
 
df = pd.DataFrame(rows, columns = df_cols)
print(df)

的代码的问题在于,正在尝试在错误的元素上访问 attrib attrib 方法用于从 XML 元素中检索属性,但 District 是 XML 结构中 field 元素的 子元素 ,而不是属性。

以下是修正后的代码:

import pandas as pd
import xml.etree.ElementTree as ET

xml_file = 'v7d09WeeklyChanges.xml'

tree = ET.parse(xml_file)
root = tree.getroot()

rows = []

for record in root.iter('dataroot'):
    for field in record.findall('Vol_x0020_07_x0020_D9_x0020_LL_x0020_corr_x0020_thru'):
        district = field.find('District').text if field.find('District') is not None else None
        rows.append({"District": district})

df = pd.DataFrame(rows)
print(df)

这段代码做出了以下更改:

  1. 直接查找 District 元素: 我们使用 field.find('District') 来查找 field 元素下的 District 子元素。
  2. 处理缺失的 District 元素: 我们添加了一个检查,以防某些 field 元素没有 District 子元素。在这种情况下,我们会将 District 设置为 None 以避免错误。
  3. 使用 .text 提取文本内容: 我们使用 field.find('District').text 来获取 District 元素的文本内容。

使用这些更改,的代码现在应该能够正确地将 District 字段提取到 Pandas DataFrame 中。

标签:python,pandas,xml
From: 78835617

相关文章

  • 我正在 python 中使用 aspose.pdf 将 pdf 转换为 excel 。但问题是它只能将 pdf 的前
    `从tkinter导入*将aspose.pdf导入为ap从tkinter导入文件对话框importpandasaspdinput_pdf=filedialog.askopenfilename(filetypes=(("PDF文件",".pdf"),("所有文件",".")))output_file=filedialog.asksaveasfil......
  • 如何在selenium python中访问电子邮件中的所有文件夹
    我使用imaplib库,但有时无法访问某些帐户,我使用poplib但它只支持访问主邮箱,但不支持访问其他文件夹,如垃圾邮件我想使用imaplib,但不会出现有时甚至无法访问的错误尽管我有一个帐户,但我仍然可以访问它,或者是否有另一个库可以快速支持该帐户?你想要使用Selenium和Python......
  • python安装torch-cluster、torch-scatter、torch-sparse和torch-geometric | torch_ge
    1.检查CUDA版本【方法1】用nvidia-smi已装cuda,用nvidia-smi或nvcc-V查看【方法2】用torch已装torch,用torch代码打印importtorchprint(torch.__version__)#查看pytorch安装的版本号print(torch.cuda.is_available())#查看cuda是否可......
  • Python:学生成绩管理系统(大学编程期末实验)
    引言在这个信息时代,教育管理的自动化已成为提高效率的关键。本文将介绍如何使用Python开发一个学生成绩管理系统,旨在简化成绩记录、查询和分析的过程。创作灵感来源本项目灵感来源于我在教育机构的工作经历,以及对提高教育管理效率的持续追求。通过复盘过往项目,我意识到一个......
  • 手把手教你使用Python网络爬虫下载一本小说(附源码)
    大家好,我是Python进阶者。前言前几天【磐奚鸟】大佬在群里分享了一个抓取小说的代码,感觉还是蛮不错的,这里分享给大家学习。一、小说下载如果你想下载该网站上的任意一本小说的话,直接点击链接进去,如下图所示。只要将URL中的这个数字拿到就可以了,比方说这里是951,那么这个数字......
  • 借助 Transformer 实现美股价格的预测(Python干货)
    作者:老余捞鱼原创不易,转载请标明出处及原作者。写在前面的话:      Transformer是一种在自然语言处理等领域广泛应用的深度学习架构,与传统的循环神经网络(RNN)相比,Transformer可以并行处理输入序列的各个位置,大大提高了计算效率。而且通过多层的深度堆叠,能够学习......
  • 将 Mojo 与 Python 结合使用
    Mojo允许您访问整个Python生态系统,但环境可能会因Python的安装方式而异。花些时间准确了解Python中的模块和包的工作原理是值得的,因为有一些复杂情况需要注意。如果您以前在调用Python代码时遇到困难,这将帮助您入门。Python中的模块和包让我们从Python开始,如......
  • Mojo和Python中的类型详解
    调用Python方法时,Mojo需要在原生Python对象和原生Mojo对象之间来回转换。大多数转换都是自动进行的,但也有一些情况Mojo尚未处理。在这些情况下,您可能需要进行显式转换,或调用额外的方法。Python中的Mojo类型Mojo基本类型隐式转换为Python对象。目前支持的......
  • python绘制圆柱体
     importosimportrandomimportnumpyasnpimportmatplotlib.pyplotasplt#合成管道数据集defplot_cylinder(center,radius,height,num_points=100):#生成圆柱体的侧面点坐标theta=np.linspace(0,2*np.pi,num_points)intervalZ=np.floor(h......
  • 计算机毕业设计必看必学!! 86393 基于微服务架构的餐饮系统的设计与实现,原创定制程序,
    摘   要近年来,我国经济和社会发展迅速,人们物质生活水平日渐提高,餐饮行业更是发展迅速,人们对于餐饮行业的认识和要求也越来越高。传统形式的餐饮行业都是以人为本,管理起来需要很多人力、物力、财力,既不方便管理者的管理,也不方便顾客实时了解餐厅动态,给传统餐......