[英]Parse custom XML to JSON or Pandas DataFrame. (Python)
以下是我的xml文档。
<BizTalk xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Body>
<QUEUE>
<FILTER FILTERNAME="CorrectAddress" VALUE="1" />
<FILTER FILTERNAME="DaysSinceLastTracking" VALUE="0" />
<FILTER FILTERNAME="DaysSinceShipped" VALUE="3" />
<FILTER FILTERNAME="DaysUntilDelivered" VALUE="735101" />
<FILTER FILTERNAME="DeliveryStatus" VALUE="IN_TRANSIT" />
<FILTER FILTERNAME="Division" VALUE="71" />
<FILTER FILTERNAME="EmptyBox" VALUE="0" />
<FILTER FILTERNAME="FedVendInstructions" VALUE="" />
<FILTER FILTERNAME="ItemDescription" VALUE="bla bla bla" />
<FILTER FILTERNAME="ItemIssue" VALUE="Damaged" />
<FILTER FILTERNAME="ItemValue" VALUE="50" />
<FILTER FILTERNAME="PiecedSet" VALUE="0" />
<FILTER FILTERNAME="HasProofOfDelivery" VALUE="0" />
<FILTER FILTERNAME="RecievedPOD" VALUE="0" />
<FILTER FILTERNAME="RequestedAction" VALUE="Reship" />
<FILTER FILTERNAME="HasReturntracking" VALUE="0" />
<FILTER FILTERNAME="IsStandardFillLocation" VALUE="1" />
<FILTER FILTERNAME="Tampered" VALUE="0" />
<FILTER FILTERNAME="HasTracking" VALUE="1" />
<FILTER FILTERNAME="ShortName" VALUE="BDD" />
<FILTER FILTERNAME="IsBOPS" VALUE="0" />
<FILTER FILTERNAME="WrongItemType" VALUE="" />
</QUEUE>
<RESPONSEDATA>
<ITEMS>
<DATA CanReOrder="1" UPC="xxxxxxx" Quantity="1" LineNumber="1" Description="bla bla bla" />
</ITEMS>
<DATA ITEM="Reservation" VALUE="????????" />
<DATA ITEM="ShipmentNumber" VALUE="1" />
<DATA ITEM="ContactedBy" VALUE="Shipping Customer" />
<DATA ITEM="PackageRecieved" VALUE="1" />
<DATA ITEM="CheckedEverywhere" VALUE="0" />
</RESPONSEDATA>
如何将此自定义 XML 转换为 Pandas DataFrame?
我尝试了一些使用 xmljson 的预定义覆盖,这会引发错误“str 对象没有属性标签”
我尝试使用 ELEmentTree 并将元素树对象列表传递给 Pandas,它会抛出空的 Dataframe:
etree = ET.fromstring(xml_data)
df = pd.DataFrame(list(etree))
print(df)
我目前正计划编写自定义解析器,它将FilterName作为列名,将 Value 作为其字段,但这是硬编码。 我想以后避免这种事情,好像添加了更多字段,我必须手动添加它们,这很麻烦。
有什么方法可以遍历每一行(可以使用 Loop with Open 来完成)。 并动态地向 Pandas DataFrame 添加列?
或者有什么有效的方法?
注意:我在W3Schools上检查了 XML 的有效性,它说没有发现错误,所以我相信 XML 是有效的。
谢谢
酷,我找到了解决方案。 我做了以下事情:
df = pd.DataFrame()
etree = ET.fromstring(xml_data)
# root = etree.getroot()
for node in etree.findall('.//FILTER'):
parent = node.attrib.get('FILTERNAME')
child = node.attrib.get('VALUE')
col_name = parent
val = child
df[col_name] = [val]
打印(df)
只是想发帖,让任何人都面临类似的问题,它可以有所帮助。 谢谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.