В XML <Founded>
и <Name>
являются дочерними тегами для тега <Team>
, а атрибут country
также является частью тега <Team>
.Следовательно, мы должны iter
съесть над XML DOM тега <Team>
.Далее, должен быть какой-то способ хранения значений цикла for
на каждой итерации, поскольку это будут значения строк для каждого столбца.Мы можем сделать это, создав словарь (df_dict
) из трех столбцов, значения которых будут равны пустым спискам.Мы добавляем соответствующие списки для каждого Country
, Club
и Founded
на каждой итерации.Наконец, мы создаем Dataframe (df
) из этого словаря.
import xml.etree.cElementTree as et
import pandas as pd
def main():
parsed_xml = et.parse("test.xml")
df_dict = {'Country':[],'Club':[], 'Founded':[]}
root = parsed_xml.getroot()
for country in root.iter('Team'):
Country = country.attrib.get('country')
Club = country.find('Name').text
Founded = country.find('Founded').text
df_dict['Country'].append(Country)
df_dict['Club'].append(Club)
df_dict['Founded'].append(Founded)
print('Dict for dataframe: {}'.format(df_dict))
df = pd.DataFrame(df_dict)
print("Dataframe: \n{}".format(df))
main()
Ниже приведен вывод при запуске этого сценария:
#Output:
Dict for dataframe: {'Country': ['France', 'France'], 'Club': ['Angers', 'Bastia'], 'Founded': ['1919', '1905']}
Dataframe:
Country Club Founded
0 France Angers 1919
1 France Bastia 1905