热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python如何创建xml文件_如何在Python中打开这个XML文件来创建dataframe?

XML是一个树状结构,而Pandas数据帧是一个二维表状结构。所以这两者之间没有自动转换的方法。您必须了解XML结构并知道如何将其数据映射到二维表。因此,

XML是一个树状结构,而Pandas数据帧是一个二维表状结构。所以这两者之间没有自动转换的方法。您必须了解XML结构并知道如何将其数据映射到二维表。

因此,每个XML到数据帧的问题都是不同的。

XML有两个数据集,每个数据集包含一系列数据。每个序列都包含许多Obs元素。

每个序列都有一个NAME属性,每个Obs都有Obs_STATUS、TIME_PERIOD和Obs_VALUE属性。因此,创建一个包含NAME、OBS_STATUS、TIME_PERIOD和OBS_VALUE列的表可能是合理的。

我发现从XML中提取所需的数据有点复杂,这使我怀疑是否找到了最好的方法。但这里有一种方法(PS.Thomas Maloney关于从二维表(如XLS)数据开始的想法应该简单得多):import lxml.etree as ET

import pandas as pd

path = 'feds200628.xml'

def fast_iter(context, func, *args, **kwargs):

"""

http://lxml.de/parsing.html#modifying-the-tree

Based on Liza Daly's fast_iter

http://www.ibm.com/developerworks/xml/library/x-hiperfparse/

See also http://effbot.org/zone/element-iterparse.htm

http://stackoverflow.com/a/7171543/190597 (unutbu)

"""

for event, elem in context:

func(elem, *args, **kwargs)

# It's safe to call clear() here because no descendants will be

# accessed

elem.clear()

# Also eliminate now-empty references from the root node to elem

for ancestor in elem.xpath('ancestor-or-self::*'):

while ancestor.getprevious() is not None:

del ancestor.getparent()[0]

del context

data = list()

obs_keys = ['OBS_STATUS', 'TIME_PERIOD', 'OBS_VALUE']

columns = ['NAME'] + obs_keys

def process_obs(elem, name):

dct = elem.attrib

# print(dct)

data.append([name] + [dct[key] for key in obs_keys])

def process_series(elem):

dct = elem.attrib

# print(dct)

context = ET.iterwalk(

elem, events=('end', ),

tag='{http://www.federalreserve.gov/structure/compact/common}Obs'

)

fast_iter(context, process_obs, dct['SERIES_NAME'])

def process_dataset(elem):

nsmap = elem.nsmap

# print(nsmap)

context = ET.iterwalk(

elem, events=('end', ),

tag='{{{prefix}}}Series'.format(prefix=elem.nsmap['kf'])

)

fast_iter(context, process_series)

with open(path, 'rb') as f:

context = ET.iterparse(

f, events=('end', ),

tag='{http://www.federalreserve.gov/structure/compact/common}DataSet'

)

fast_iter(context, process_dataset)

df = pd.DataFrame(data, columns=columns)

收益率NAME OBS_STATUS TIME_PERIOD OBS_VALUE

0 SVENY01 A 1961-06-14 2.9825

1 SVENY01 A 1961-06-15 2.9941

2 SVENY01 A 1961-06-16 3.0012

3 SVENY01 A 1961-06-19 2.9949

4 SVENY01 A 1961-06-20 2.9833

5 SVENY01 A 1961-06-21 2.9993

6 SVENY01 A 1961-06-22 2.9837

...

1029410 TAU2 A 2014-09-19 3.72896779

1029411 TAU2 A 2014-09-22 3.12836171

1029412 TAU2 A 2014-09-23 3.20146575

1029413 TAU2 A 2014-09-24 3.29972110



推荐阅读
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文探讨了 Objective-C 中的一些重要语法特性,包括 goto 语句、块(block)的使用、访问修饰符以及属性管理等。通过实例代码和详细解释,帮助开发者更好地理解和应用这些特性。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • 本文介绍了如何在C#中启动一个应用程序,并通过枚举窗口来获取其主窗口句柄。当使用Process类启动程序时,我们通常只能获得进程的句柄,而主窗口句柄可能为0。因此,我们需要使用API函数和回调机制来准确获取主窗口句柄。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 本文介绍如何使用布局文件在Android应用中排列多行TextView和Button,使其占据屏幕的特定比例,并提供示例代码以帮助理解和实现。 ... [详细]
author-avatar
手机用户2502921293
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有