【发布时间】:2021-08-09 10:06:25
【问题描述】:
我正在使用具有多个 XML 字符串列的数据框。 XML 字符串具有以下结构。
<row>
<group>
<date>2021-12-25</date>
<ind1>50</ind1>
...
<indN>10</indN>
</group>
...
<group>
<date>2021-12-31</date>
<ind1>28</ind1>
...
<indN>13</indN>
</group>
</row>
数据框的结构如下:
id name indicators
1 John '<?xml version="1.0"?>\n<row>\n <group>\n <date>2021-12-25</date> ...'
1 John '<?xml version="1.0"?>\n<row>\n <group>\n <date>2021-12-31</date> ...'
...
我想分解 XML 字符串,以便它为每个指标创建一个列。我想要一些看起来像下面的数据框的东西。
id name date ind1 ... indN
1 John 2021-12-25 50 ... 10
1 John 2021-12-31 28 ... 13
...
这就是数据框的样子
df.head(2).to_dict()
>> {'KEY': {0: 1,
1: 2},
'INDICATORS': {0: '<?xml version="1.0"?>\n<row>\n <group>\n <date>2017-12-31</date>\n <ind1>14</ind1>\n <ind2>24</ind2>\n </group>\n <group>\n <date>2015-12-31</date>\n <ind1>10</ind1>\n <ind2>20</ind2>\n </group>\n <group>\n <date>2016-12-31</date>\n <ind1>12</ind1>\n <ind2>22</ind2>\n </group>\n</row>\n',
1: '<?xml version="1.0"?>\n<row>\n <group>\n <date>2017-12-31</date>\n <ind1>0</ind1>\n <ind2>0</ind2>\n </group>\n <group>\n <date>2015-12-31</date>\n <ind1>0</ind1>\n <ind2>0</ind2>\n </group>\n <group>\n <date>2016-12-31</date>\n <ind1>0</ind1>\n <ind2>0</ind2>\n </group>\n</row>\n'}}
你有什么想法吗?
【问题讨论】:
-
pd.read_xml(data)怎么样,但是你需要更新 pandas [链接](pandas.pydata.org/pandas-docs/dev/whatsnew/…) -
你尝试了什么?请发布更好的数据框格式,尝试
df.head(2).to_dict()并将输出粘贴到您的帖子中。 -
可以用
beautifulsoup解析吗? -
我不认为它是重复的。就我而言,我的数据框的每一行都对应一个分配了特定
id的实体。对于每个实体/ID,我需要为每组指标创建一行。在您所说的可能重复中,XML 是一个文件,而不是 Dataframe 中的一列。
标签: python pandas xml dataframe