python - 尝试在熊猫数据框中追加时获得“真”值而不是实际值
问题描述
下面是我的 python 脚本。我正在尝试解析 xml 文件并尝试将值存储在 pandas 数据框中,以便以后可以将其更改为 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]
解决方案
正如 Nitin 和 Martin 回答的那样,在此处粘贴最终代码。
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)
推荐阅读
- python - 输出与预测不符
- r - 如何运行 prefixspan (sparklyr) 包(顺序模式挖掘)
- couchdb - 如何在 Grafana 中显示来自 JSON blob 的字段?
- java - 字符串列表的Java列表
- javascript - 为什么我可以在 HTML 和 CSS 中访问跨源图像,但不能在 JS HTTP 请求中访问?
- ios - 动作表覆盖背景动画延迟 [SwiftUI]
- javascript - Angular CKEditor 5 在按钮单击时添加自定义类
- python - PySide6 中具有可变布局的多个图表
- security - 代理可以看到 https 标头吗?
- javascript - 使用获取的数据获取数据?