Python: пустая строка, возвращающаяся как None в преобразовании XML в Pandas - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь проанализировать файл XML и вывести текст из указанных c элементов в Pandas DataFrame. Если элемент не содержит данных, должна быть сохранена пустая строка. Вместо этого я добавляю None в мой DataFrame. Мой код ниже:

XML

<?xml version="1.0" encoding="utf-8"?>
<Data xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Header>
    <Employee> 
      <FirstName>John</FirstName>
      <MiddleName />
      <LastName>Smith</LastName>
      <Gender>M</Gender>
      <Phone>555-5555</Phone>
    </Employee>
    <Employee> 
      <FirstName>Jane</FirstName>
      <MiddleName />
      <LastName>Doe</LastName>
      <Gender>F</Gender>
      <Phone />
    </Employee>
  </Header>
</Data>

Код

def get_value(node):
return str(node.text) if node is not None else ""


tree = et.parse(file_path)
df_cols = ["First Name", "Last Name", "Phone Number"]
df = pd.DataFrame(columns=df_cols)

for node in tree.iter("Employee")
    first_name = get_value(node.find("FirstName")
    last_name = get_value(node.find("LastName")
    phone = get_value("PhoneNumber")

    df = df.append(pd.Series([first_name, last_name, phone], index=df_cols), ignore_index=True)

print(df)

Выход

First Name,Last Name,Phone Number
John,Smith,555-5555
Jane,Doe,None

Мне нужно None, чтобы вместо отображения просто как пустая строка, как показано ниже:

First Name,Last Name,Phone Number
John,Smith,555-5555
Jane,Doe,

Мне интересно, работает ли моя функция get_value не так, как задумано, и не возвращает ли пустую строку вместо NoneType, или пустая строка каким-то образом интерпретируется обратно в NoneType при обработке Pandas?

Обновление
Я также пытался использовать df.replace(["nan", "None"], "") , как предлагается здесь , но мой DataFrame по-прежнему выводит «None» в столбцах, где не было данных XML. Это происходит как в терминале, так и когда DataFrame сохраняется в файл.

...