将 pandas 数据帧转换为 XML [英] Converting pandas dataframe to XML

查看:49
本文介绍了将 pandas 数据帧转换为 XML的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道之前有人问过这个问题,而我的最后一个问题被搁置了,所以现在我要详细说明.我有一个人口信息的 CSV 文件,我将它读给了熊猫,现在必须将它转换为 XML,例如像这样
<人口数据><市镇><名称>阿卡</名称><年>2014年</年><总计>17052......

I know this question has been asked before and my last was put on hold, so now I'm specifying it detailed. I have a CSV file of population information, I read it to pandas and now have to transform it to XML, for example like this
<?xml version="1.0" encoding="utf-8"?> <populationdata> <municipality> <name> Akaa </name> <year> 2014 </year> <total> 17052 ......

这是我的代码的阅读部分:
将熊猫导入为 pdpop = pd.read_csv(r'''directory\population.csv''', delimiter=";")

This is the reading part of my code:
import pandas as pd pop = pd.read_csv(r'''directory\population.csv''', delimiter=";")

尝试像之前在链接中提到的那样使用函数和循环:如何将熊猫/数据帧转换为 XML?.还没有成功,也许还有其他建议?

Tried doing it like in mentioned before in the link here with function and cycle: How do convert a pandas/dataframe to XML?. Haven't succeeded, any other recommendations maybe?

这是我的数据框示例:
Alahärmä 2014 0 0.1 0.20 阿拉耶尔维 2014 10171 5102 50691 阿拉斯塔罗 2014 0 0 02 阿拉维斯卡 2014 2687 1400 12873 阿拉维斯 2014 12103 6102 60014 Anjalankoski 2014 0 0 0

对 python 相当陌生,因此感谢任何帮助.

Fairly new to python, so any help is apreciated.

推荐答案

您链接的问题实际上对您的问题有很好的答案,但我猜您在将数据转换为该解决方案时遇到了困难,所以我在下面完成了给你.

The question you have linked to actually has a great answer to your question but I guess you’re having difficulty transposing your data into that solution so Ive done it below for you.

好吧,你的细节水平有点粗略.如果您的具体情况略有不同,那么您需要调整我的答案,但这里有一些对我有用的东西:

Ok your level of detail is a bit sketchy. If your specific situation differs slightly then you'll need to tweak my answer but heres something that works for me:

首先假设你有一个如下的文本文件:

First off assuming you have a text file as follows :

0       Alahärmä  2014      0   0.1   0.2
1      Alajärvi  2014  10171  5102  5069
2      Alastaro  2014      0     0     0
3     Alavieska  2014   2687  1400  1287
4        Alavus  2014  12103  6102  6001
5  Anjalankoski  2014      0     0     0

继续创建 python 脚本,我们首先使用以下行导入该文本文件:

Moving on to creating the python script, we first import that text file using the following line:

pop = pd.read_csv(r'directory\population.csv', delimiter=r"\s+", names=['cityname', 'year', 'total', 'male', 'females'])

这会将文本文件作为数据框引入,并为新数据框提供正确的列标题.

This brings in the text file as a dataframe and gives the new dataframe the correct column headers.

然后从您链接的问题中获取数据,我们将以下内容添加到我们的 Python 脚本中:

Then taking the data from the question you linked to, we add the following to our python script:

def func(row):
    xml = ['<item>']
    for field in row.index:
        xml.append('  <field name="{0}">{1}</field>'.format(field, row[field]))
    xml.append('</item>')
    return '\n'.join(xml)

print('\n'.join(pop.apply(func, axis=1)))

现在我们把它们放在一起,我们得到以下内容:

Now we put it all together and we get the below:

import pandas as pd
pop = pd.read_csv(r'directory\population.csv', delimiter=r"\s+", names=['cityname', 'year', 'total', 'male', ‘females'])

def func(row):
    xml = ['<item>']
    for field in row.index:
        xml.append('  <field name="{0}">{1}</field>'.format(field, row[field]))
    xml.append('</item>')
    return '\n'.join(xml)

print('\n'.join(pop.apply(func, axis=1)))

当我们运行上述文件时,我们得到以下输出:

When we run the above file we get the following output:

<item>
  <field name="cityname">Alahärmä</field>
  <field name="year">2014</field>
  <field name="total">0</field>
  <field name="male">0.1</field>
  <field name="females">0.2</field>
</item>
<item>
  <field name="cityname">Alajärvi</field>
  <field name="year">2014</field>
  <field name="total">10171</field>
  <field name="male">5102.0</field>
  <field name="females">5069.0</field>
</item>
<item>
  <field name="cityname">Alastaro</field>
  <field name="year">2014</field>
  <field name="total">0</field>
  <field name="male">0.0</field>
  <field name="females">0.0</field>
</item>
<item>
  <field name="cityname">Alavieska</field>
  <field name="year">2014</field>
  <field name="total">2687</field>
  <field name="male">1400.0</field>
  <field name="females">1287.0</field>
</item>
<item>
  <field name="cityname">Alavus</field>
  <field name="year">2014</field>
  <field name="total">12103</field>
  <field name="male">6102.0</field>
  <field name="females">6001.0</field>
</item>
<item>
  <field name="cityname">Anjalankoski</field>
  <field name="year">2014</field>
  <field name="total">0</field>
  <field name="male">0.0</field>
  <field name="females">0.0</field>
</item>

这篇关于将 pandas 数据帧转换为 XML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆