Я сейчас пытаюсь проанализировать файл XML, код ниже работает нормально, за исключением одной проблемы. В случае создаваемого мной списка полных имён это единственный тег, который не всегда появляется в каждом поддереве, т.е. типы user_names
, profiles
, & * authentication
возвращают, скажем, 30 элементов, а full_name
возвращает 27 .
Поэтому, когда я пытаюсь создать dataframe
, я получаю ошибку, потому что списки имеют разную длину.
xmltree = ET.parse(xml)
namespaces = {'ns5':'urn:swift:saa:xsd:operator',
'profile':'urn:swift:saa:xsd:operatorprofile'
}
user_names = xmltree.xpath('//ns5:Identifier/ns5:Name/text()', namespaces=namespaces)
full_names = xmltree.xpath('//ns5:Description/text()', namespaces=namespaces)
profiles = xmltree.xpath('//profile:Name/text()', namespaces=namespaces)
authentication_types = xmltree.xpath('//ns5:AuthenticationType/text()', namespaces=namespaces)
xml = pd.DataFrame({'User_Name': user_names, 'Full_Name': full_names,
'Profile': profiles, 'Authentication_Type': authentication_types})
Есть ли способ сделать это так, чтобы dataframe
мог быть создан с нулевыми значениями (или пробелами) в столбце полных имен?