我知道这个问题以前曾被提出过,而我的上一个问题被搁置了,所以现在我将其详细说明。我有一个人口信息的CSV文件,我将其读取为大熊猫,现在必须将其转换为XML,例如这样
<?xml version="1.0" encoding="utf-8"?> <populationdata> <municipality> <name> Akaa </name> <year> 2014 </year> <total> 17052 ......
这是我的代码的阅读部分:
import pandas as pd pop = pd.read_csv(r'''directory\population.csv''', delimiter=";")
试图像之前在此处的函数和循环链接中提到的那样进行操作:如何将熊猫/数据帧转换为XML?。没有成功,可能还有其他建议吗?
这是我的数据框的一个示例:
Alahärmä 2014 0 0.1 0.2 0 Alajärvi 2014 10171 5102 5069 1 Alastaro 2014 0 0 0 2 Alavieska 2014 2687 1400 1287 3 Alavus 2014 12103 6102 6001 4 Anjalankoski 2014 0 0 0
对python来说还算是新手,所以对它的帮助不胜枚举。
您链接到的问题实际上可以很好地回答您的问题,但我想您很难将数据转换为该解决方案,因此我在下面为您做了说明。
好的,您的详细程度有些粗略。如果您的具体情况略有不同,那么您需要调整我的答案,但是这对我有用:
首先,假设您有一个文本文件,如下所示:
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脚本,我们首先使用以下行导入该文本文件:
pop = pd.read_csv(r'directory\population.csv', delimiter=r"\s+", names=['cityname', 'year', 'total', 'male', 'females'])
这将文本文件作为数据框引入,并为新数据框提供正确的列标题。
然后从链接到的问题中获取数据,将以下内容添加到我们的python脚本中:
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)))
现在,我们将所有内容放在一起,得到以下内容:
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)))
当我们运行上面的文件时,我们得到以下输出:
<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>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句