pyKML モジュールを使用して、Python で KML ファイルを解析する方法を学んでいます。私が使用している特定のファイルはここで見つけることができ、この投稿の最後にも追加しました。ファイルをコンピューターに保存し、名前を付けましたtest.kml
。
いくつかの調査の後、test.kml
ファイルの特定の部分を抽出し、結果を DataFrame に保存することができました。これが私のコードです:
from pykml import parser
import pandas as pd
filename = 'test.kml'
with open(filename) as fobj:
folder = parser.parse(fobj).getroot().Document
plnm = []
for pm in folder.Placemark:
plnm1 = pm.name
plnm.append(plnm1.text)
df = pd.DataFrame()
df['name'] = plnm
print(df)
name
0 Club house
1 By the lake
の値に対応する新しい列を DataFrame に追加したいと思います"holeNumber"
。ループに次の行を追加しようとしましたfor
が、成功しませんでした。
for pm in folder.Placemark:
plnm1 = pm.name
val1 = pm.ExtendedData.holeNumber.value
plnm.append(plnm1.text)
val.append(val1.text)
その特定のノードから値にアクセスする方法がわかりません。私が探している結果の DataFrame は次のとおりです。
| name | holeNumber |
|-------------|------------|
| Club house | 1 |
| By the lake | 5 |
どんな助けでも大歓迎です。
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>My Golf Course Example</name>
<Placemark>
<name>Club house</name>
<ExtendedData>
<Data name="holeNumber">
<value>1</value>
</Data>
<Data name="holeYardage">
<value>234</value>
</Data>
<Data name="holePar">
<value>4</value>
</Data>
</ExtendedData>
<Point>
<coordinates>-111.956,33.5043</coordinates>
</Point>
</Placemark>
<Placemark>
<name>By the lake</name>
<ExtendedData>
<Data name="holeNumber">
<value>5</value>
</Data>
<Data name="holeYardage">
<value>523</value>
</Data>
<Data name="holePar">
<value>5</value>
</Data>
</ExtendedData>
<Point>
<coordinates>-111.95,33.5024</coordinates>
</Point>
</Placemark>
</Document>
</kml>