@ciel_tktk

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Pythonで孫要素が子要素より多いXMLのデータフレーム

解決したいこと

以前にも似たような質問をさせていただき、子要素が孫要素より多い場合の解析はできるようになったのですが、逆に孫要素が子要素より多いケースが多くあり、データフレームの作成に躓いております。

<?xml version="1.0"?>
<data>
    <country name="Japan">
		<Prefecture name = "Tokyo"> 
			<City name = "Shinagawa"/>
			<City name = "Shibuya"/>
			<City name = "Shinjuku"/>
		</Prefecture>
		<Prefecture name = "Kanagawa">
			<City name = "Yokohama"/>
			<City name = "Kawasaki"/>
		</Prefecture>	
    </country>
</data>

こんなデータフレームになることを期待しているのですが、解析方法がわからず困っております。良い方法はありますでしょうか?
image.png

お力添えをいただきたく思います。

0 likes

1Answer

ジェネレータ関数で処理するのはいかがでしょうか。

import xml.etree.ElementTree as ET
import pandas as pd

def data():
    eroot = ET.parse('prefectures.xml').getroot()
    for prefecture in eroot.findall(".//Prefecture"):
        cities = prefecture.findall('City')
        for city in cities:
            yield prefecture.get('name'), city.get('name')
        if not cities:
            yield prefecture.get('name'), None

df = pd.DataFrame(data(), columns=('Prefecture', 'City'))
print(df)
1Like

Your answer might help someone💌