【发布时间】:2022-06-11 03:04:47
【问题描述】:
我有以下格式的xml:
<?xml version='1.0' encoding='UTF-8'?>
<ettevotjad>
<ettevotja>
<nimi>000 Holdings OÜ</nimi>
<ariregistri_kood>16372442</ariregistri_kood>
<ettevotja_oiguslik_vorm>Osaühing</ettevotja_oiguslik_vorm>
<ettevotja_oigusliku_vormi_alaliik/>
<kmkr_nr/>
<ettevotja_staatus>R</ettevotja_staatus>
<ettevotja_staatus_tekstina>Registrisse kantud</ettevotja_staatus_tekstina>
<ettevotja_esmakande_kpv>23.11.2021</ettevotja_esmakande_kpv>
<ettevotja_aadress>
<asukoht_ettevotja_aadressis/>
<asukoha_ehak_kood/>
<asukoha_ehak_tekstina></asukoha_ehak_tekstina>
<indeks_ettevotja_aadressis/>
<ads_adr_id></ads_adr_id>
<ads_ads_oid></ads_ads_oid>
<ads_normaliseeritud_taisaadress/>
</ettevotja_aadress>
<teabesysteemi_link>https://ariregister.rik.ee/est/company/16372442</teabesysteemi_link>
</ettevotja>
<ettevotja>
<nimi>001 group OÜ</nimi>
<ariregistri_kood>12754230</ariregistri_kood>
<ettevotja_oiguslik_vorm>Osaühing</ettevotja_oiguslik_vorm>
<ettevotja_oigusliku_vormi_alaliik/>
<kmkr_nr/>
<ettevotja_staatus>R</ettevotja_staatus>
<ettevotja_staatus_tekstina>Registrisse kantud</ettevotja_staatus_tekstina>
<ettevotja_esmakande_kpv>17.11.2014</ettevotja_esmakande_kpv>
<ettevotja_aadress>
<asukoht_ettevotja_aadressis>Õismäe tee 78-9</asukoht_ettevotja_aadressis>
<asukoha_ehak_kood>0176</asukoha_ehak_kood>
<asukoha_ehak_tekstina>Haabersti linnaosa, Tallinn, Harju maakond</asukoha_ehak_tekstina>
<indeks_ettevotja_aadressis>13513</indeks_ettevotja_aadressis>
<ads_adr_id>2182337</ads_adr_id>
<ads_ads_oid></ads_ads_oid>
<ads_normaliseeritud_taisaadress>Harju maakond, Tallinn, Haabersti linnaosa, Õismäe tee 78-9</ads_normaliseeritud_taisaadress>
</ettevotja_aadress>
<teabesysteemi_link>https://ariregister.rik.ee/est/company/12754230</teabesysteemi_link>
</ettevotja>
</ettevotjad>
使用pandas'.read_xml() 产生:
import pandas as pd
data = pd.read_xml('test_file.xml')
print(data.head(2).to_string())
nimi ariregistri_kood ettevotja_oiguslik_vorm ettevotja_oigusliku_vormi_alaliik kmkr_nr ettevotja_staatus ettevotja_staatus_tekstina ettevotja_esmakande_kpv ettevotja_aadress teabesysteemi_link
0 000 Holdings OÜ 16372442 Osaühing NaN None R Registrisse kantud 23.11.2021 NaN https://ariregister.rik.ee/est/company/16372442
1 001 group OÜ 12754230 Osaühing NaN None R Registrisse kantud 17.11.2014 NaN https://ariregister.rik.ee/est/company/12754230
注意数据框中的'ettevotja_aadress' 是NaN,但实际上如果您查看xml 结构,它与那些子列/标题嵌套在一起。如何将这些嵌套列展开到数据框中?
我认为一种方法是简单地读取文件,删除<ettevotja_aadress>和<ettevotja_aadress>标签,然后读入pandas,但似乎应该有直接的方法来做到这一点,类似到pandas'.json_normalize()。
【问题讨论】: