получение значения «Истина» вместо реального значения при попытке добавления в панду - PullRequest
0 голосов
/ 25 октября 2018

Ниже приведен мой скрипт на python. Я пытаюсь проанализировать xml-файл и пытаюсь сохранить значения в pandas dataframe, чтобы впоследствии я мог изменить его на csv-файл.

import os
import pandas as pd
import sys
import requests
import xml.etree.ElementTree as ET
from xml.dom import minidom

tree = ET.parse('schedule.xml')
FILENAME = sys.argv[1]
COL_NAMES = ['PODNAME', 'DC', 'Upgrade']
DF = pd.DataFrame(columns = COL_NAMES)
root = tree.getroot()

def parseXml(DF, filePath):

    xmldoc = minidom.parse(filePath)
    PODs= xmldoc.getElementsByTagName("POD")
    name=[]
    DC=[]
    deferUpgrade=[]
    for pod in PODs:
        if pod.hasAttribute("name") and pod.hasAttribute("DC") and pod.hasAttribute("deferUpgrade"):
            DF = DF.append({'PODNAME': pod.getAttribute("name"), 'DC': pod.hasAttribute("DC"), 'Upgrade': pod.hasAttribute("deferUpgrade")}, ignore_index=True)
    return(DF)


DF = parseXml(DF, FILENAME)

Ниже приведен XML-файл

<Schedule xmlns="http://xmlns.xyz.com/fal/downtimeschedule/V1.0">
 <Downtime end="20181020000" id="10001197610_20181027000_201810000" mode="cold" start="20181020000"/>
 <PODS>
  <POD DC="US - Washing" deferUpgrade="true" name="ABCD" patching="Production" EndTime="20181028040000">
   <CR id="12345"/>
   <CR id="12346"/>
   <CR id="123"/>
  </POD>
  <POD DC="US - Washing" deferUpgrade="true" name="ABCD-TEST" patching="Production" EndTime="20181028040000">
   <CR id="12345"/>
   <CR id="12346"/>
   <CR id="123"/>
  </POD>
 </PODS>

когда я запускаю свой скрипт с первым аргументом в качестве имени файла, я получаю вывод ниже

     PODNAME    DC Upgrade
0       ABCD  True    True
1  ABCD-TEST  True    True

Однако я ожидаю вывод ниже.

     PODNAME    DC            Upgrade
0       ABCD  US - Washing    true
1  ABCD-TEST  US - Washing    true

Кроме того, я попытался использовать concat для преодоления вышеуказанной проблемы, но получил ниже ouotput

       PODNAME              DC Upgrade
0       [ABCD]  [US - Washing]  [true]
1  [ABCD-TEST]  [US - Washing]  [true]

1 Ответ

0 голосов
/ 28 ноября 2018

Как ответили Нитин и Мартин, вставив здесь окончательный код.

import os
import pandas as pd
import sys
import requests
import xml.etree.ElementTree as ET
from xml.dom import minidom

tree = ET.parse('schedule.xml')
FILENAME = sys.argv[1]
COL_NAMES = ['PODNAME', 'DC', 'Upgrade']
DF = pd.DataFrame(columns = COL_NAMES)
root = tree.getroot()

def parseXml(DF, filePath):

    xmldoc = minidom.parse(filePath)
    PODs= xmldoc.getElementsByTagName("POD")
    name=[]
    DC=[]
    deferUpgrade=[]
    for pod in PODs:
        if pod.hasAttribute("name") and pod.hasAttribute("DC") and pod.hasAttribute("deferUpgrade"):
            DF = DF.append({'PODNAME': pod.getAttribute("name"), 'DC': pod.getAttribute("DC"), 'Upgrade': pod.getAttribute("deferUpgrade")}, ignore_index=True)
    return(DF)


DF = parseXml(DF, FILENAME)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...