XML转换为dataframe

原创 2018年04月16日 15:31:32

xml文档

<?xml version="1.0"?>
<data>
    <customer name="小明" >
        <email>xm@gmail.com</email>
        <phone>555-1234</phone>
    </customer>
    <customer name="小王" >
        <email>xw@gmail.com</email>
    </customer>    
    <customer name="小爱" >
        <email>xa@gmail.com</email>
        <phone>555-4567</phone>
    </customer>  
    <customer name="大卫" >
        <phone>555-6472</phone>
        <address>
            <street>Fifth Avenue</street>
        </address>
    </customer>      
</data>

read and parse XMLfile

import xml.etree.cElementTree as et
parsedXML = et.parse('demo.xml')

node.attrib.get(),获取标签内部,k-v对应的键值

node.find()找到对应的子标签,(node.find(‘xxx’)).text:返回对应的内容

for node in parsedXML.getroot():
    name = node.attrib.get('name')
    email = node.find('email')
    phone = node.find('phone')
    street = node.find('address/street')

Full script

import xml.etree.cElementTree as et
import pandas as pd

def getvalueofnode(node):
    """ return node text or None """
    return node.text if node is not None else None


def main():
    """ main """
    parsed_xml = et.parse("demo.xml")
    dfcols = ['name', 'email', 'phone', 'street']
    df_xml = pd.DataFrame(columns=dfcols)

    for node in parsed_xml.getroot():
        name = node.attrib.get('name')
        email = node.find('email')
        phone = node.find('phone')
        street = node.find('address/street')

        df_xml = df_xml.append(
            pd.Series([name, getvalueofnode(email), getvalueofnode(phone),
                       getvalueofnode(street)], index=dfcols),
            ignore_index=True)

    print (df_xml)
main()
  name         email     phone        street
0   小明  xw@gmail.com  555-1234          None
1   小王  xw@gmail.com      None          None
2   小爱  xa@gmail.com  555-4567          None
3   大卫          None  555-6472  Fifth Avenue
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014281392/article/details/79961297

RDD转换为DataFrame

RDD转换为DataFrame今天在使用spark处理movielens数据集时,由于要在数据集中添加一列,所以不能直接读取数据集生成DataFrame,需要在生成DataFrame之前预处理一下数据...
  • Dillon2015
  • Dillon2015
  • 2017-03-29 19:03:22
  • 2377

将RDD[vector]转化成DataFrame

机器学习中的feature是vector,有时我们在得到RDD[Vector]后,想给feature添加索引,然后转化成DataFrame,这样我们可以根据id来知道某一个feature对应是哪一个样...
  • cqupt0901
  • cqupt0901
  • 2016-10-10 10:35:11
  • 1305

python的dataframe和matrix的互换

#-*- encoding:utf-8 -*- import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(3,4...
  • Yan456jie
  • Yan456jie
  • 2016-08-01 21:05:26
  • 16887

sparkrdd转dataframe的两种方式

import java.sql.Timestamp import org.apache.spark.sql.{SaveMode, SQLContext} import org.apache.spar...
  • qq_26398033
  • qq_26398033
  • 2016-08-31 10:48:30
  • 2113

pandas.dataframe 转换(笔记)

to_dict 或者to_json orient 设置:(用于存入mongodb文档) orient : str {‘dict’, ‘list’, ‘series’, ‘split’, ‘r...
  • zhghuizhg
  • zhghuizhg
  • 2017-06-18 00:24:55
  • 1324

RDD转换为DataFrame的两种方式及spark sql的简单实例

参考 http://zhao-rock.iteye.com/blog/2328161 package spark_sql import util.HDFSHelper import java.io...
  • ronaldo4511
  • ronaldo4511
  • 2016-11-28 16:26:57
  • 8413

python中ndarray与dataframe互转

情况1:输入的数据data为list 情况2:输入的数据data为dict 情况3:输入的数据data为ndarray...
  • Bryan__
  • Bryan__
  • 2017-12-11 21:54:43
  • 514

DataFrame格式化和RDD/Dataset/DataFrame互转

1.如果是格式化成Json的話直接     val rdd = df.toJSON.rdd   2.如果要指定格式需要自定义函数如下: //格式化具体字段条目 def formatItem(...
  • chengxuyuanyonghu
  • chengxuyuanyonghu
  • 2017-02-08 10:44:28
  • 1540

Spark 之DataFrame与RDD 转换

DataFrame可以从结构化文件、hive表、外部数据库以及现有的RDD加载构建得到。具体的结构化文件、hive表、外部数据库的相关加载可以参考其他章节。这里主要针对从现有的RDD来构建DataFr...
  • lxhandlbb
  • lxhandlbb
  • 2016-08-30 11:08:37
  • 14876

RDD转换DataFrame的两种方式的比较

package com.lyzx.day19 import org.apache.spark.sql.types.{StringType, StructField, StructType} impo...
  • lyzx_in_csdn
  • lyzx_in_csdn
  • 2018-01-08 17:00:23
  • 45
收藏助手
不良信息举报
您举报文章:XML转换为dataframe
举报原因:
原因补充:

(最多只允许输入30个字)