Преобразуйте XML в Pandas фреймы данных, автоматически определяя имена столбцов - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь написать функцию синтаксического анализа для преобразования указанных c xml данных во фрейм данных в python.

Данные XML имеют следующую структуру

<?xml version='1.0' encoding='UTF-8'?><package_D15D.HISTORY xmlns="http://xml.mscibarra.com/ns/msci/deal/D15D.HISTORY" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xml.mscibarra.com/ns/msci/deal/D15D.HISTORY 20140602_20140630_CORE_DM_SEC_MAIN_DAILY.xsd">
<dataset_D15D>
    <entry calc_date="2014-06-02" ... >
    </entry>
    <entry ...

Здесь можно найти образец данных здесь .

Ну, каждая строка между двумя </entry>. Я написал следующую функцию:

def parse_XML(xml_file, df_cols): 

    xtree = et.parse(xml_file)
    xroot = xtree.getroot()
    rows = []

    for node in xroot: 
        print(xroot)
        res = []
        res.append(node.attrib.get(df_cols[0]))
        for el in df_cols[1:]: 
            if node is not None and node.find(el) is not None:
                res.append(node.find(el).text)
            else: 
                res.append(None)
        rows.append({df_cols[i]: res[i] 
                     for i, _ in enumerate(df_cols)})

    out_df = pd.DataFrame(rows, columns=df_cols)

    out_df.to_csv('C:/Users/dataa', sep=';', encoding='utf-8')
    return out_df

Однако, фрейм данных пуст при вызове функции. Есть идеи?

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