0

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>
4

1 に答える 1