首页 > 解决方案 > XML 到数据帧

问题描述

我的代码没有在 Datafeame 中输入值 - 全部无,请帮助查找错误。最初我在这里取了代码 fron=m http://gokhanatil.com/2017/11/python-for-data-science-importing-xml-to-pandas-dataframe.html#comment-414932

我的 xml

    xmlns="http://www.sec.gov/edgar/document   /thirteenf/informationtable"        xmlns:xsi="http://www.w3.org/2001/XMLSchema-   instance">
    <infoTable>
                                                  <nameOfIssuer>AMERICAN AIRLS GROUP    INC</nameOfIssuer>
   <titleOfClass>COM</titleOfClass>
   <cusip>02376R102</cusip>
   <value>857267</value>
   <shrsOrPrnAmt>
       <sshPrnamt>20742000</sshPrnamt>
       <sshPrnamtType>SH</sshPrnamtType>
   </shrsOrPrnAmt>
   <investmentDiscretion>DFND</investmentDiscretion>
   <otherManager>4</otherManager>
   <votingAuthority>
       <Sole>20742000</Sole>
       <Shared>0</Shared>
       <None>0</None>
   </votingAuthority>

我的代码

 import xml.etree.cElementTree as et
 import pandas as pd


def getvalueofnode(node):
    """ return node text or None """
    return node.text if node is not None else None


def main():
    """ main """
    parsed_xml = et.parse("form13fInfoTable.xml")
   dfcols = ['infoTable/nameOfIssuer', 'infotanle/cusip', 'infotable/value']
df_xml = pd.DataFrame(columns=dfcols)

for node in parsed_xml.getroot():
    print(parsed_xml.getroot())
    parsed_xml.getroot()

    nameOfIssuer = node.find('informationTable/infoTable/nameOfIssuer')
    cusip = node.find('infoTable/cusip')
    value = node.find('infoTable/value')


    df_xml =    df_xml.append(pd.Series([getvalueofnode(nameOfIssuer),getvalueofnode(cusip), getvalueofnode(value)], index=dfcols),ignore_index=True)

print(df_xml)


main()

标签: pythonxmlpandasdataframe

解决方案


我会写评论,但我还不能这样做。

您的 xml 文件是否正确?似乎您的 xml 中缺少开始标记,其中一个是命名空间:

<root xmlns=... > your xml </root>

此外,<infoTable>标签未关闭


推荐阅读